Форма отзыва не отправляется

В моем проекте я добавил новое поле location в «обзоры продуктов» панели администратора, выполнив следующие шаги, как описано во многих блогах.

  • Создал новое поле в таблице базы данных review_detail как location.
  • Добавлен следующий код в app/code/code/Mage/Adminhtml/Block/Review/Edit/Form.php

        $fieldset->addField('location', 'text', array(
                'name'  => 'location',
                'label' => Mage::helper('adminhtml')->__('Location'),
                'required' => false
            )
        ); 
    

Чуть выше:

    $fieldset->addField('nickname', 'text', array(
        'label'     => Mage::helper('review')->__('Nickname'),
        'required'  => true,
        'name'      => 'nickname'
    ));
  • .Добавил следующий код в app/code/core/Mage/Review/Model/Resource/Review.php

    $detail = array(
        'title'     => $object->getTitle(),
        'detail'    => $object->getDetail(),
        'nickname'  => $object->getNickname(),
        'location'  => $object->getLocation()   /* added */
    );
    
  • Добавлено «местоположение» в массив функций ниже. В файле: app/code/core/Mage/Review/Model/Resource/Review/Collection.php

    protected function _initSelect()
    {
        parent::_initSelect();
        $this->getSelect()
            ->join(array('detail' => $this->_reviewDetailTable),
                'main_table.review_id = detail.review_id',
                array('detail_id', 'title', 'detail', 'nickname', 'customer_id','location'));
        return $this;
    }
    
  • В {$mytheme}/template/review/form.phtml добавлено следующее:

    <li>
          <label for="location_field" class="required"><em>*</em><?php echo $this->__('Location') ?></label>
          <div class="input-box">
               <input type="text" name="nickname" id="location_field" class="input-text required-entry" value="<?php echo $this->htmlEscape($data->getLocation()) ?>" />
          </div>
    </li>   
    

Моя проблема заключается в том, что хотя я вижу новое поле в панели администратора, всякий раз, когда я отправляю форму проверки, она не отправляется/не сохраняется в базе данных.

Я даже переиндексировал и почистил кеш.

Что я должен изменить больше, чтобы заставить его работать правильно?

Пожалуйста, помогите... Я на magento 1.8.

PS: Я знаю, что основные файлы не должны быть изменены. Я переопределю это на новый модуль, как только добьюсь успеха в этой проблеме.


person Mr_Green    schedule 05.12.2013    source источник


Ответы (3)


Я следовал точным шагам, описанным в вопросе. И найти его работающим правильно.

Единственная проблема, с которой я столкнулся, заключалась в том, что в {$mytheme}/template/review/form.phtml

Вы определили name="nickname" для поля местоположения вместо name="location"

Исправьте это, и если вы все еще сталкиваетесь с той же проблемой, проверьте, не переопределены ли классы модулей.

person Deependra Singh    schedule 08.12.2013
comment
Я никогда не думал, что это... установка name в местоположение решила проблему. Спасибо большое :) - person Mr_Green; 09.12.2013

Посмотрите на html-код, созданный в браузере. Проверить:

  • ваше поле включено в теги?
  • правильно ли установлены тип действия и цель?
  • с помощью консоли браузера по вашему выбору (например, chrome F12) убедитесь, что поля установлены правильно и форма действительно отправлена.
person Charma    schedule 07.12.2013

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

Надеюсь, это сработает.

person ROBIN    schedule 08.12.2013