2012-04-10 98 views
1

我期待着創建一個自定義字段'電子郵件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' 
)); 

回答

2

最後我已經解決了它... 打開 應用程序\代碼\核心\法師\評論\型號\資源\ 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

6

修改法師核心類是有點嚇人,這將是難以提升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

相關問題