私はまだ自分の Prestashop 1.7 コントローラーを作成する方法を学んでいます。からコードをコピーしました:
class MyLittleController extends AdminController
{
public $bootstrap = true ;
public function __construct()
{
$this->table = 'my_sql_tab';
$this->className = 'MyLittle';
parent::__construct();
$this->addRowAction('view');
$this->addRowAction('edit');
$this->addRowAction('delete');
$this->allow_export = true;
$this->_defaultOrderBy = 'fields_name';
$this->_defaultOrderWay = 'DESC';
$this->bulk_actions = array(
'delete' => array(
'text' => $this->trans('Delete selected', array(), 'Admin.Actions'),
'icon' => 'icon-trash',
'confirm' => $this->trans('Supprimer ?', array(), 'Admin.Notifications.Warning')
)
);
$this->fields_list = array(
'fields_name' => array('title' => $this->trans('fields_name', array(), 'Admin.Global'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'fields_name2' => array('title' => $this->trans('fields_name2', array(), 'Admin.Global')),
'fields_name3' => array('title' => $this->trans('fields_name3', array(), 'Admin.Global'))
);
}
public function initPageHeaderToolbar()
{
if (empty($this->display)) {
$this->page_header_toolbar_btn['new_MyLittle'] = array(
'href' => self::$currentIndex.'&add&token='.$this->token,
'desc' => $this->trans('Add', array(), 'Admin.Catalog.Feature'),
'icon' => 'process-icon-new'
);
}
parent::initPageHeaderToolbar();
}
public function displayForm()
{
// Get default language
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
// Init Fields form array
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Settings'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('test'),
'name' => $this->name,
'size' => 20,
'required' => true
)
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
$helper = new HelperForm();
// Module, token and currentIndex
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
// Language
$helper->default_form_language = $default_lang;
$helper->allow_employee_form_lang = $default_lang;
// Title and toolbar
$helper->title = $this->displayName;
$helper->show_toolbar = true; // false -> remove toolbar
$helper->toolbar_scroll = true; // yes - > Toolbar is always visible on the top of the screen.
$helper->submit_action = 'submit'.$this->name;
$helper->toolbar_btn = array(
'save' =>
array(
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
'&token='.Tools::getAdminTokenLite('AdminModules'),
),
'back' => array(
'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
'desc' => $this->l('Back to list')
)
);
// Load current value
$helper->fields_value[$this->name] = Configuration::get($this->name);
return $helper->generateForm($fields_form);
}
public function setMedia()
{
parent::setMedia();
$this->addJqueryUi('ui.widget');
$this->addJqueryPlugin('tagify');
}
このコードは、prestashop 1.7 のドキュメントといくつかの既存のモジュールに触発されています。うまく機能し、SQL テーブルの内容を表示します。「追加」ボタンは表示されますが、クリックすると「?controller=Mylittle&add」にリダイレクトされますが、コンテンツは同じで、他のコントローラーのように renderForm が表示されませんでした。私は何か見落としてますか ?
編集:私が忘れていたいくつかの検索の後、わかりました:
$this->actions = array('add', 'view', 'edit', 'delete');
そのため、追加または編集が呼び出されると、「renderForm()」が表示されます。「view」を呼び出すと、「rederview()」もよく表示されます。prestashop の初心者に役立つことを願っています。