PrestaShop FormHelper预加载多语言值

时间:2016-03-07 18:51:44

标签: php prestashop

这里我看到一个小问题,我有两个表模板和template_text,在模板表中我存储模板类型和可见性数据,在template_text表中我用多种语言存储模板文本,atm。我有两个郎。例如EN和DE。因此,当我编辑模板时,我将当前模板值预加载到表单中,但是像autoemailer_title和autoemailer_body这样的值存在问题,当from helper生成表单字段时,它会以这样的方式生成此字段autoemailer_title_1,autoemailer_title_2依据语言ID,那么,问题是如何以正确的方式预加载所有这些值?我可以使用javascript和ajax获取请求获取值,然后使用输入ID设置它们,但我认为使用表单助手有更好的方法。

$fields_form = array(
            'form' => array(
                'legend' => array(
                    'title' => $this->l($params['title']),
                    'icon' => 'icon-cogs'
                ),
                'input' => array(
                    array(
                        'type' => 'select',                              // This is a <select> tag.
                        'label' => $this->l('Template type'),         // The <label> for this <select> tag.
                        'desc' => $this->l('Choose a template type'),  // A help text, displayed right next to the <select> tag.
                        'name' => 'autoemailer_type',                     // The content of the 'id' attribute of the <select> tag.
                        'required' => true,                              // If set to true, this option must be set.
                        'options' => array(
                            'query' => array(
                                array(
                                    'id_option' => 'static',       // The value of the 'value' attribute of the <option> tag.
                                    'name' => 'Static'   // The value of the text content of the  <option> tag.
                                ),
                                array(
                                    'id_option' => 'dynamic',
                                    'name' => 'Dynamic'
                                ),
                            ),                           // $options contains the data itself.
                            'id' => 'id_option',                           // The value of the 'id' key must be the same as the key for 'value' attribute of the <option> tag in each $options sub-array.
                            'name' => 'name'                               // The value of the 'name' key must be the same as the key for the text content of the <option> tag in each $options sub-array.
                        )
                    ),
                    array(
                        'type' => 'text',
                        'label' => $this->l('News letter title'),
                        'name' => 'autoemailer_title',
                        'desc' => $this->l('Title'),
                        'lang' => true,
                        // 'style' => 'width:300px',
                        'class' => 'fixed-width-lg',
                    ),
                    array(
                        'type' => 'textarea',
                        'label' => $this->l('Text'),
                        'name' => 'autoemailer_body',
                        'desc' => $this->l('Email body'),
                        'lang' => true,
                        'cols' => 60,
                        'rows' => 10,
                        'class' => 'rte', // we need this for setuping the tiny mce editor
                        'autoload_rte' => true, // we need this for setuping the tiny mce editor
                    ),
                ),
                'submit' => array(
                    'title' => $this->l('Save')
                )
            )
        );

        $helper = new HelperForm();
        $helper->show_toolbar = false;
        $helper->table = $this->table;
        $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
        $helper->default_form_language = $lang->id;
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
        $this->fields_form = array();

        $helper->identifier = $this->identifier;
        $helper->submit_action = 'newTemplate';
        $helper->currentIndex = $this->getThisUrl() . '&emailer_action=main';
        $helper->token = Tools::getAdminTokenLite('AdminModules');

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

1 个答案:

答案 0 :(得分:1)

解决了这个问题。因此,当我们有多个lang时,我们应用multilangiage选项的属性就变成了一个数组,所以要根据语言设置值,我们可以这样做:

afterCloudRender