Php 自定义字段未保存在magento product review中
我正在尝试在magento产品评论中添加额外字段。 1.产品的优点 2.产品的坏处 我明白这一点。我已将核心文件覆盖到本地文件中。 这是我的代码: 模板/review/form.phtml 数据库查询:Php 自定义字段未保存在magento product review中,php,magento,Php,Magento,我正在尝试在magento产品评论中添加额外字段。 1.产品的优点 2.产品的坏处 我明白这一点。我已将核心文件覆盖到本地文件中。 这是我的代码: 模板/review/form.phtml 数据库查询: ALTER TABLE `review_detail` ADD `goodthing` TEXT NOT NULL COMMENT 'review goodthing' AFTER `nickname` , ADD `badthing` TEXT NOT NULL COMMENT '
ALTER TABLE `review_detail` ADD `goodthing` TEXT NOT NULL COMMENT 'review goodthing' AFTER `nickname` ,
ADD `badthing` TEXT NOT NULL COMMENT 'review badthing' AFTER `goodthing` ;
/local/Mage/Review/controllers/ProductController.php
表单提交后不保存自定义字段的值,但将默认字段保存到数据库,我尝试使用
Mage::log()进行调试代码>,我在提交时获取控制器中所有字段的值,但未进入模型,且未在模型中打印日志。请尝试此操作,如果未解决,请让我们知道控制器的代码,以便保存审核
请尝试此操作,如果未解决,请告知控制器代码,以便进行保存检查
我也面临同样的问题,但能够解决它。以下是步骤:
1) 我的phtml文件:添加了自定义字段“电子邮件”
<li>
<label for="email_field" class="required"><?php echo $this->__('Email Address') ?> :</label>
<div class="input-box">
<input type="text" name="email" id="email_field" value="<?php echo $email; ?>" class="form-control validate-email" placeholder="Enter your Email" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter your Email'" />
</div>
</li>
3) 重写Mage/Review/controllers/ProductController.php和编辑方法
protected function _cropReviewData(array $reviewData)
{
$croppedValues = array();
$allowedKeys = array_fill_keys(array('detail', 'title', 'nickname','customer_email'), true);
foreach ($reviewData as $key => $value) {
if (isset($allowedKeys[$key])) {
$croppedValues[$key] = $value;
}
}
return $croppedValues;
}
我们已将自定义字段客户\电子邮件添加到数组
3) 覆盖Mage\u Review\u Model\u Resource\u Review.php和编辑方法\u afterSave并将自定义字段添加到$detail数组中
$detail = array(
'title' => $object->getTitle(),
'detail' => $object->getDetail(),
'nickname' => $object->getNickname(),
'customer_email' => $object->getCustomerEmail(),
);
完成上述更改后,自定义字段的值将保存到DB我也面临同样的问题,但能够解决它。以下是步骤:
1) 我的phtml文件:添加了自定义字段“电子邮件”
<li>
<label for="email_field" class="required"><?php echo $this->__('Email Address') ?> :</label>
<div class="input-box">
<input type="text" name="email" id="email_field" value="<?php echo $email; ?>" class="form-control validate-email" placeholder="Enter your Email" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter your Email'" />
</div>
</li>
3) 重写Mage/Review/controllers/ProductController.php和编辑方法
protected function _cropReviewData(array $reviewData)
{
$croppedValues = array();
$allowedKeys = array_fill_keys(array('detail', 'title', 'nickname','customer_email'), true);
foreach ($reviewData as $key => $value) {
if (isset($allowedKeys[$key])) {
$croppedValues[$key] = $value;
}
}
return $croppedValues;
}
我们已将自定义字段客户\电子邮件添加到数组
3) 覆盖Mage\u Review\u Model\u Resource\u Review.php和编辑方法\u afterSave并将自定义字段添加到$detail数组中
$detail = array(
'title' => $object->getTitle(),
'detail' => $object->getDetail(),
'nickname' => $object->getNickname(),
'customer_email' => $object->getCustomerEmail(),
);
完成上述更改后,自定义字段的值将保存到DB我已更新控制器功能,我确实按照你的建议做了尝试,但它仍然没有将自定义字段保存到数据库中。让我知道控制器php代码确保核心文件的控制器不在本地目录中。我已经添加了控制器的代码,我知道不使用核心文件进行编辑,我始终使用本地文件,我很感激你在核心文件上指出不要编辑。但在控制器的情况下,你必须编辑控制器。所以,请改变你的核心控制器代码。你能告诉我编辑什么和在哪里吗?或者如果你更新你的答案就更好了。我已经更新了控制器函数,并按照你的建议进行了尝试,但仍然没有将自定义字段保存到数据库中。让我知道控制器php代码确保核心文件的控制器不在本地目录中。我已经添加了控制器的代码,我知道不要用核心文件编辑,我总是用本地文件工作,我感谢你在核心文件上指出不要编辑。但在控制器的情况下,你必须编辑控制器。所以,请改变你的核心控制器代码。你能告诉我编辑什么和在哪里吗?或者如果你更新你的答案就更好了。
$detail = array(
'title' => $object->getTitle(),
'detail' => $object->getDetail(),
'nickname' => $object->getNickname(),
'customer_email' => $object->getCustomerEmail(),
);