2016-11-04 3 views
0

Я хочу создать новую ссылку/страницу в меню левой панели backoffice. Поэтому я решил, что создам контроллер.Prestashop Backoffice Controller

контроллеров/администратор/AdminPageController.php:

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

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

     } 
    } 
?> 

администратора \ Themes \ умолчанию \ шаблон \ контроллеры \ страница \ 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 -> Администрирование -> Меню - > Я создал меню для своего контроллера с родительским родителем.

В соответствии с этим, он должен показать столбец компании & из таблицы ps_customer.

Однако, когда я открываю эту тестовую страницу, я вижу это:

компания по электронной почте «, в то время как ($ строки = mysqli_fetch_array ($ результат)) {эхо ""; эхо "" $ строки [ 'компании. ']. ""; echo "". $ row [' email ']. ""; echo "";} echo ""; mysqli_close ($ con);?>

Почему это не отображает таблицу? то, что я делаю неправильно

Thanx

+1

Извините, но это совершенно неправильно, ваш подход ... Пожалуйста, прочтите [это] (http://doc.prestashop.com/display/PS16/Creating + a + PrestaShop + Module) и [это] (http://doc.prestashop.com/display/PS16/Best+Practices+of+the+Db+Class) до: – sarcom

ответ

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) Для того, чтобы отобразить список на внутреннем интерфейсе: Вы не можете использовать код PHP в TPL файл, как и в вашем content.tpl. Чтобы загрузить список клиентов, вы можете использовать помощники внутри своего контроллера и указывать имя_таблицы и имя_класса в контрукторе вашего контроллера (AdminPageController). Упомяните поля в методе render_list, и помощники сделают все остальное.

Посмотрите на example1, указанной в ссылке prestashop document

Смежные вопросы