2015-03-16 1 views
0

Я создаю модуль бэк-офиса для Prestashop и выяснил все, кроме наилучшего способа отображения страницы администратора. В настоящее время я использую метод renderView() для отображения содержимого view.tpl.Создание брандмауэра Prestashop с настройками страницы

Я хотел бы отобразить таблицу со значениями и добавить новую строку. Должен ли я просто создать его в view.tpl или есть лучший способ? Я видел метод renderForm(), но пока не понял, как он работает.

самый большой вопрос у меня есть, как мне отправить содержимое обратно моему контроллеру в конкретный метод?

ответ

1

ModuleAdminController предназначен для управления некоторыми типами записей, которые являются ObjectModel. Страница Defaly для этого контроллера представляет собой список, затем вы можете редактировать каждую запись отдельно или просматривать ее полные данные (view).

Если вы хотите иметь страницу настроек, лучшим способом является создание функции getContent() для вашего модуля. Кроме того, для этой страницы конфигурации модуля HelperOptions лучше, чем HelperForm, потому что он автоматически выравнивает значения. Определите форму в этой функции и над ней добавьте один if (Tools::isSubmit('submit'.$this->name)) - Отправьте кнопку name, затем сохраните свои значения в таблице configuration. Configuration::set(...).

Конечно, можно создать какую-то страницу настроек в AdminController, но она не предназначена для этого. Если вы действительно хотите: доберитесь до HookCore.php и найдите exec метод. Затем добавьте error_log($hook_name), и вы будете перехватывать, которые выполняются при открытии/сохранении/закрытии страницы/формы. Возможно, вы найдете свой крючок таким образом. Лучшим способом было бы проверить родительский класс AdminControllerCore или даже ControllerCore. У них часто есть определенная функция, готовая быть перегруженной, где вы должны сохранять свои вещи. Они уже являются частью процесса выполнения, но пусты.

Редактировать: Вы должны взглянуть на другие классы AdminController, они wuite простые; Вам нужно только определить некоторые свойства для того, чтобы работать:

public function __construct() 
{ 
    // Define associated model 
    $this->table = 'eqa_category'; 
    $this->className = 'EQACategory'; 

    // Add some record actions 
    $this->addRowAction('edit'); 
    $this->addRowAction('delete'); 

    // define list columns 
    $this->fields_list = array(
     'id_eqa_category' => array(
      'title' => $this->l('ID'), 
      'align' => 'center', 
     ), 
     'title' => array(
      'title' => $this->l('Title'), 
     ), 
    ); 

    // Define fields for edit form 
    $this->fields_form = array(
     'input' => array(
      array(
       'name'  => 'title', 
       'type'  => 'text', 
       'label' => $this->l('Title'), 
       'desc'  => $this->l('Category title.'), 
       'required' => true, 
       'lang'  => true 
      ), 
     'submit' => array(
      'title' => $this->l('Save'), 
     ) 
    ); 

    // Call parent constructor 
    parent::__construct(); 
} 

Другие люди хотели бы переместить список и форму определения фактических функций, которые делают их:

public function renderForm() 
{ 
    $this->fields_form = array(...); 

    return parent::renderForm(); 
} 

Вы на самом деле не нужно чтобы делать что-либо еще, контроллер сопоставляет поля с вашими моделями, загружает их, сохраняет их и т. д.

Опять же, лучший способ узнать об этом контроллере - посмотреть другие контроллеры AdminControllers.

+0

Я действительно хочу управлять записями в списке. Я не знал правильной терминологии для того, что я пытаюсь выполнить. Я создал собственную модель для моего модуля. Какие функции я использую в своем модулеAdminController для отображения этих данных? – kel

+0

Обновленный ответ. – gskema

+0

Отлично. Это то, что я искал. Я вижу, что происходит сейчас. Благодарю. – kel