Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自定义字段未保存在magento product review中_Php_Magento - Fatal编程技术网

Php 自定义字段未保存在magento product review中

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 '

我正在尝试在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  '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(),
    );