1

私はまだ自分の 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 の初心者に役立つことを願っています。

4

0 に答える 0