在评论表单中添加自定义字段

问题描述:

我期待着创建一个自定义字段'电子邮件ID'&在评论表单中有一个下拉列表。在评论表单中添加自定义字段

我已经试过这一个,但不保存数据,它怎么样了领域唯一

应用程序\代码\核心\法师\评论\型号\ Mysql4 \ Review.php

protected function _afterSave(Mage_Core_Model_Abstract $object) 
{ 
$detail = array(
'title' => $object->getTitle(), 
'detail' => $object->getDetail(), 
'nickname' => $object->getNickname(), 
'email' => $object->getEmail(), // New field 1 
'fname' => $object->getFname(), // New field 2 
); 

现在添加电子邮件,FNAME在数据库中的表review_detail也去应用程序\代码\核心\法师\ Adminhtml \块\评论\编辑\ form.php的也补充:

$fieldset->addField('fname', 'text', array(// New field 2 
'label' => Mage::helper('review')->__('First Name'), 
'required' => true, 
'name' => 'fname' 
)); 

$fieldset->addField('email', 'text', array(// New field 1 
'label' => Mage::helper('review')->__('Email'), 
'required' => true, 
'name' => 'email' 
)); 

之前

$fieldset->addField('nickname', 'text', array(
'label' => Mage::helper('review')->__('Nickname'), 
'required' => true, 
'name' => 'nickname' 
)); 

最后我已经解决了它... 打开 应用程序\代码\核心\法师\评论\型号\资源\ Review.php

你会发现这个代码行约150

protected function _afterSave(Mage_Core_Model_Abstract $object) 
{ 
$detail = array(
'title' => $object->getTitle(), 
'detail' => $object->getDetail(), 
'nickname' => $object->getNickname(), 
); 

添加您要添加​​的新两个字段。

protected function _afterSave(Mage_Core_Model_Abstract $object) 
{ 
$detail = array(
'title' => $object->getTitle(), 
'detail' => $object->getDetail(), 
'nickname' => $object->getNickname(), 
'email' => $object->getEmail(), // New field 1 
'fname' => $object->getFname(), // New field 2 
); 

这就是它没有更多.... :)快乐编码

+1

这是添加自定义字段,但如果提交的表单不被存储在数据库:( – 2013-12-05 12:37:39

+3

-1:它的核心文件更改 – anshuman 2014-09-30 13:41:22

+0

正如anshuman说,从来没有使用它作为解决方案编辑核心文件是一个非常糟糕的做法,并且在magento更新期间将会很难解决。 – 2016-05-03 12:04:44

修改法师核心类是有点吓人,这将是难以提升Magento的核心类的未来。你可以通过自己的自定义模块覆盖特定类别(见模块的创造者,如果你想建立一个)

模块的config.xml,添加模型如下改写:

<global> 
    <models> 
     <review_mysql4> 
      <rewrite> 
       <review>[[Your Company]]_[[Your Module]]_Model_Review</review> 
      </rewrite> 
     </review_mysql4> 
    </models> 
    ... 
</global> 

和指定的类将从你想覆盖的Magento核心类扩展到:

class [[Your Company]]_[[Your Module]]_Model_Review 
    extends Mage_Review_Model_Mysql4_Review 
{ 
    protected function _afterSave(Mage_Core_Model_Abstract $object) 
    { 
    .... 
    } 
} 

Ps。添加新的领域在Magento review_detail表:

$installer = $this; 
$installer->startSetup(); 
$installer->run("ALTER TABLE review_detail ADD COLUMN email VARCHAR(255) NULL"); 
$installer->endSetup(); 
+0

我应该使用什么来代替''来重写某些其他类? – 2013-11-21 06:14:51