簡體   English   中英

從Prestashop Admin Controller渲染幫助程序表單

[英]Render helper form from prestashop admin controller

我正在嘗試添加一個幫助程序表單,該表單允許用戶上傳用戶可以選擇的兩種語言的圖像。

但是,我堅持使用表單,無法在視圖中呈現它。 這是我的控制器代碼:

<?php

class AdminWineoHeaderImgController extends ModuleAdminController
{
    public function __construct()
    {
        $this->bootstrap = true;
        $this->lang = (!isset($this->context->cookie) ||
         !is_object($this->context->cookie)) ? intval(Configuration::get('PS_LANG_DEFAULT')) : intval($this->context->cookie->id_lang);

        parent::__construct();
    }

    public function display()
    {
        parent::display();
    }

    public function renderList()
    {
        $this->renderForm();
        $return = $this->context->smarty->fetch(_PS_MODULE_DIR_.'wineoheaderimg/views/templates/hook/adminwineoimg.tpl');

        return $return;
    }

    public function renderForm()
    {
        $fields_form = array(
            'form' => array(
                'legend' => array(
                    'title' => $this->module->l('Wineo Header Img Configuration'),
                    'icon' => 'icon-envelope',
                ),
                'input' => array(
                    array(
                        'type' => 'file',
                        'label' => $this->module->l('Add images'),
                        'name' => 'enable_grades',
            'id' => 'uploadwineoheaderimg',
            'required' => false,
                        'desc' => $this->module->l('Choose images that will appear on the front page.'),
                    ),
                    array(
                    'type' => 'select',
                    'label' => $this->l('Languages:'),
                    'name' => 'category',
                    'required' => true,
                    'options' => array(
                                'query' => $options = array(
                                            array(
                                              'id_option' => 1,       // The value of the 'value' attribute of the <option> tag.
                                              'name' => 'EN',    // The value of the text content of the  <option> tag.
                                            ),
                                            array(
                                              'id_option' => 2,
                                              'name' => 'BG',
                                            ),
                                ),
                                'id' => 'id_option',
                                'name' => 'name',
                               ),
                ),
                ),
                'submit' => array('title' => $this->module->l('Save')),
            ),
        );

        $helper = new HelperForm();
        $helper->table = 'wineoheaderimg';
        $helper->default_form_language = (int) Configuration::get('PS_LANG_DEFAULT');
        $helper->allow_employee_form_lang = (int) Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG');
        $helper->submit_action = 'wineo_header_img_pc_form';
        $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->module->name.'&tab_module='.$this->module->tab.'&module_name='.$this->module->name;
        $helper->token = Tools::getAdminTokenLite('AdminModules');
        $helper->tpl_vars = array(
            'fields_value' => array(
                'wineo_header_img' => Tools::getValue('enable_grades', Configuration::get('WINEO_HEADER_IMG')),
            ),
            'languages' => $this->context->controller->getLanguages(),
        );

        return $helper->generateForm(array($fields_form));
    }
}

我應該在哪里調用方法renderForm()? 我已經嘗試過管理鈎子,並且基本上可以想象到任何地方。

任何幫助將不勝感激!

那么你在呼喚renderForm()renderList()我假設你想要的形式,在默認情況下顯示,當您打開控制器頁),但你沒有的形式分配給模板。

public function renderList()
{
    $form = $this->renderForm();

    // To load form inside your template
    $this->context->smarty->assign('form_tpl', $form);
    return $this->context->smarty->fetch(_PS_MODULE_DIR_.'wineoheaderimg/views/templates/hook/adminwineoimg.tpl');

    // To return form html only
    return $form;
}

因此,如果您想要adminwineoimg.tpl的表格

{* Some HTML *}
{$form_tpl}
{* Some HTML *}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM