1

レビュー フォームにカスタム フィールド「メール ID」と 1 つのドロップダウンを作成することを楽しみにしています。

私はこれを試しましたが、データを保存しませんでした。フィールドのみが表示されます

app\code\core\Mage\Review\Model\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
);

次に、データベースの review_detail テーブルに email,fname を追加し、app\code\core\Mage\Adminhtml\Block\Review\Edit\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'
));
4

2 に答える 2

6

Mageコアクラスの変更は少し怖いので、将来的に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)
    {
     .... 
    }
}

追伸 magento review_detailテーブルに新しいフィールドを追加するには:

$installer = $this;
$installer->startSetup();
$installer->run("ALTER TABLE review_detail ADD COLUMN email VARCHAR(255) NULL");
$installer->endSetup();
于 2012-10-04T05:15:18.010 に答える
2

最後に私はそれを解決しました... app\code\core\Mage\Review\Model\Resource\Review.php を開きます

このコードは約150行にあります

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

追加する新しい 2 つのフィールドを追加します。

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
);

それだけではありません.... :) 幸せなコーディング

于 2012-04-10T11:10:24.897 に答える