在我的项目中,我在管理面板的“产品评论”中添加了一个新字段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 */
);
在下面的函数数组中添加了“ location ”。在文件中: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:我知道不应该更改核心文件。一旦我在这个问题上取得成功,我将把它覆盖到新模块。
答案 0 :(得分:2)
我确实遵循了在排队中解释的确切步骤。并找到它正常工作。
我遇到的唯一问题是{$mytheme}/template/review/form.phtml
您已为位置字段定义了name="nickname"
,而不是name="location"
更正此问题,如果您仍然面临同样的问题,请检查模块类是否被覆盖。
答案 1 :(得分:0)
查看在浏览器中创建的html代码。检查:
答案 2 :(得分:0)
试试这个,首先进行数据库备份。从core_resource表中删除表的条目并加载站点。简而言之,尝试使用列“位置”重新创建db表。我不知道,当我们在varien表单中添加新字段时,setter出了什么问题,它们无法正常工作。
我希望这会奏效。