Добавить дополнительное текстовое поле в обзор magento - PullRequest
2 голосов
/ 29 октября 2011

Я пытаюсь добавить дополнительное текстовое поле к обзору продукции magento. Похоже, что это может понадобиться в таблице 'review_detail', но помимо создания столбца в БД и добавления поля в файл шаблона, я не уверен, как добавить это поле, чтобы оно было интегрировано в система обзора. Кто-нибудь может заставить меня начать в правильном направлении?

Ответы [ 2 ]

1 голос
/ 09 апреля 2012

Я добавил 2 дополнительных поля в форму обзора, просто перейдите в frontend \ base \ default \ template \ review / form.phtml и добавьте два поля в качестве другого текстового поля.

Теперь перейдите в приложение \ 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
);

Теперь добавьте адрес электронной почты, fname в таблице review_detail в базе данных и перейдите в 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'
));

Надеюсь, теперь вы можете добавить дополнительные поля в форму обзора.

Спасибо

0 голосов
/ 07 октября 2016

Для ошибки «Невозможно опубликовать отзыв» необходимо добавить эти 2 новых поля в функцию _cropReviewData в app \ code \ core \ Mage \ Review \ controllers \ ProductController.php

protected function _cropReviewData(array $reviewData)
{
    $croppedValues = array();
    $allowedKeys = array_fill_keys(array('detail', 'title', 'nickname', 'email', 'fname), true);

    foreach ($reviewData as $key => $value) {
        if (isset($allowedKeys[$key])) {
            $croppedValues[$key] = $value;
        }
    }

    return $croppedValues;
}

Я надеюсь, это поможет.

...