Magento二次开发表单域命名冲突的解决方法

作者:袖梨 2022-06-25
 代码如下 复制代码


//class Ruiwant_Consult_Block_Adminhtml_Consult_Index_Edit_Tabs_General extends Mage_Adminhtml_Block_Widget_Form
protected function _prepareForm()
{
    $fieldset2->addField('is_reply', 'checkbox', array(
        'label'     => Mage::helper('consult')->__('Email To Customer'),
        'name'         => 'is_reply',
        'checked'    => true,
        'onclick'    => 'this.value = this.checked ? 1 : 0;',
        'after_element_html' => 'Email To Customer if selected'
    ));

但是无论如何调整代码,在控制器中获取post数据的时候,is_reply的值都为空。这个问题困扰了将近2个小时的时间,始终就是想不明白为什么为空。最终,发现在Tab2中,注意,这是一个Grid列表,也包含一个字段叫做is_reply,于是想是不是这里除了问题。

 代码如下 复制代码

//class Ruiwant_Consult_Block_Adminhtml_Consult_Index_Edit_Tabs_Answer extends Mage_Adminhtml_Block_Widget_Grid
protected function _prepareColumns()
{
    $this->addColumn('is_reply', array(
        'header' => Mage::helper('consult')->__('Email To Customer'),
        'index' => 'is_reply',
        'type'      => 'options',
        'options'    => array('0' => 'Not Send', '1' => 'Send'),
    ));

在把Grid中的is_reply删除之后,竟然发现传值成功了。这个经历真心的相当郁闷。因为两块是完全不相干的事情,却有赋值操作。这里做个记录,算是经验吧。

遇到个很纠结的问题,正常添加了一个表单,但是post提交数据的时候老提交不过去,get方式却可以,尝试了很久,后来又仔细看了magento相关表单的代码,才发现每个表单post进行数据提交的时候,都加了一个formkey,具体如下:

 代码如下 复制代码


getBlockHtml('formkey')?>


生成代码:


 

 代码如下 复制代码


magento这样做应该也是为了保证提交的表单数据的安全性。

相关文章

精彩推荐