PrestaShop后台CMS页面表单加字段及前台钩子调用问题
问题描述
- 我需要为特定CMS页面添加联系表单启用选项,已使用
actionAdminCmsFormModifier和actionAdminCmsControllerSaveBefore钩子,但后台钩子函数中的echo、var_dump无输出 - 前台自定义了
hookDisplayCmsPage函数,在主题page.tpl中添加{hook h='displayCmsPage'}后可执行,但我不想修改模板,想知道展示CMS页面时可用的原生钩子 - 我是PrestaShop新手,对Symfony在表单字段添加、模板内容注入方面的逻辑不太理解
前台代码
public function hookDisplayCmsPage($params){ echo "HERE"; $cms = $this->context->smarty->getTemplateVars('cms'); if ($cms && isset($cms['id_cms']) && $this->isContactFormEnabled($cms['id_cms'])) { $contactform_module = Module::getInstanceByName('contactform'); return $contactform_module->hookDisplayContactForm($params); } return ''; }
后台代码
public function hookActionAdminCmsFormModifier($params) { error_log('hookActionAdminCmsFormModifier called'); // Log to error log var_dump($params); echo "HEREEEEE"; $cms = $params['object']; $enable_contact_form = (bool) Configuration::get('CMS_CONTACTFORM_' . $cms->id); $params['fields']['content']['form']['input'][] = [ 'type' => 'switch', 'label' => $this->l('Enable Contact Form'), 'name' => 'enable_contact_form', 'values' => [ [ 'id' => 'enable_contact_form_on', 'value' => 1, 'label' => $this->l('Ativado') // Ensure correct translation ], [ 'id' => 'enable_contact_form_off', 'value' => 0, 'label' => $this->l('Desativado') // Ensure correct translation ] ], 'is_bool' => true, 'desc' => $this->l('Ativar o formulário de contacto nesta página.'), 'value' => $enable_contact_form ]; $params['fields_value']['enable_contact_form'] = $enable_contact_form; return $params; }
内容的提问来源于stack exchange,提问作者Miguel Machado
相关产品推荐
相关产品推荐

