Prestashop后台控制器

时间:2016-11-04 15:13:00

标签: php mysql controller prestashop

我想在后台左侧菜单中创建一个新的链接/页面。所以我想我会创建一个控制器。

控制器/管理/ AdminPageController.php:

<?php
    class AdminPageController extends AdminController
    {
        public function initContent()
        {
            parent::initContent();
            $smarty = $this->context->smarty;

            $smarty->assign('testpage', 'testpage');

      }
    }
?>

管理员\主题\默认\模板\控制器\页面\ content.tpl

$con=mysqli_connect("localhost","root","password","prestashop");

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM ps_customer");

echo "<table border='1'>
<tr>
<th>company</th>
<th>email</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['company'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysqli_close($con);
?>

在BackOffice - &gt;管理 - &gt;菜单 - &gt;我创建了菜单到我的控制器,Home为父母。

根据这个,它应该显示公司&amp; ps_customer表中的电子邮件列。

然而,当我打开那个测试页面时,我看到了:

公司电子邮件&#34 ;; while($ row = mysqli_fetch_array($ result)){echo&#34;&#34 ;;回声&#34;&#34; 。 $ row [&#39; company&#39;]。 &#34;&#34 ;;回声&#34;&#34; 。 $ row [&#39;电子邮件&#39;]。 &#34;&#34 ;; echo&#34;&#34 ;; } echo&#34;&#34 ;; mysqli_close($ CON); ?&GT;

为什么不显示表格?我究竟做错了什么?

感谢名单

1 个答案:

答案 0 :(得分:0)

1)在后端创建菜单: 您可以通过在模块主文件的安装功能中创建选项卡对象来实现此目的。

例如:

public function install()
{               
    // Install Tabs
    $parent_tab = new Tab();
    $parent_tab->name[$this->context->language->id] = $this->l('Main Tab Example'); //Just put the name in the actual language
    $parent_tab->class_name = 'AdminMainExample'; //Set the class name Your controller 
    $parent_tab->id_parent = 0; // Home tab
    $parent_tab->module = $this->name;  //Set the module from the menu 
    $parent_tab->add();  //Add the tab to the database
    ....
}

同样,您必须删除卸载方法

中的选项卡
 public function uninstall()
{
    // Uninstall Tabs
    $tab = new Tab((int)Tab::getIdFromClassName('AdminMainExample'));
    $tab->delete();
    ...
}

2)在后端显示列表:  您不能像在content.tpl中那样直接在tpl文件中使用php代码。要加载客户列表,您可以使用控制器中的帮助程序,并且必须在控制器的构造函数(AdminPageController)中提及table_name和class_name。提到方法render_list中的字段,帮助程序将完成其余的工作。

查看链接prestashop document

中提到的example1