Вопрос по magento, magento-1.5 – Добавить пользовательские поля в форме обзора

1

Я с нетерпением жду создания настраиваемых полей "Email Id" & Амп; Один раскрывающийся список в форме обзора.

Я пробовал это, но не сохраняя данные, как только поля

Приложение \ код \ ядро \ Mage \ Обзор \ Model \ mysql4 \ Review.php

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

Теперь добавьте адрес электронной почты, fname в таблице review_detail в базе данных и перейдите в app \ code \ core \ Mage \ Adminhtml \ Block \ Review \ Edit \ Form.php и добавьте:

<code>$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'
));
</code>

прежде чем

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

Ваш Ответ

2   ответа
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(),
);

Добавьте два новых поля, которые вы хотите добавить.

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

Это не более .... :) Удачного кодирования

Это добавляет настраиваемое поле, но когда отправленная форма не сохраняется в базе данных :(
Как сказал Аншуман, никогда не используйте это как решение. Редактирование основных файлов - очень плохая практика, и ее будет сложно решить во время обновлений magento.
-1: изменение основного файла
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();
что я должен использовать вместо<review> переопределить какой-то другой класс?

Похожие вопросы