【问题标题】:How can i remove mandatory required for the review fields (nickname, summary of your review and review)如何删除评论字段必填项(昵称、评论摘要和评论)
【发布时间】:2014-09-26 19:13:37
【问题描述】:

如何在 Magento 中删除评论字段(昵称、评论摘要和评论)所需的必填项。我找到了一个答案,但它仅适用于管理面板: Magento Admin Add/Edit Review -> removing Summary of Review Field required validation 想在商店视图中将其删除,以便客户只需点击评分并发送。

谢谢

【问题讨论】:

    标签: magento


    【解决方案1】:

    (我正在使用 Magento2)

    两处代码必须改:

    /var/www/magento2/app/code/Magento/Review/Model/Review.php
    打开此文件后,请节省一些时间并按 ctrl+F 并键入短语 validate。应该带你到这里...

    public function validate()
        {
        $errors = [];
    
        // if (!\Zend_Validate::is($this->getTitle(), 'NotEmpty')) {
        //     $errors[] = __('Please enter a review summary.');
        // }
    
        if (!\Zend_Validate::is($this->getNickname(), 'NotEmpty')) {
            $errors[] = __('Please enter a nickname.');
        }
    
        // if (!\Zend_Validate::is($this->getDetail(), 'NotEmpty')) {
        //     $errors[] = __('Please enter a review.');
        // }
    
        if (empty($errors)) {
            return true;
        }
        return $errors;
    }   
    

    您可能会注意到 3 个 if 语句中有 2 个被注释掉了。我这样做是为了消除仅摘要和审查的要求。我想将昵称保留为必填字段,因此不会被注释掉。

    接下来,您需要将此文件从默认的 Magento Review 目录复制到本地主题目录中...

    /var/www/magento2/app/code/Magento/Review/view/frontend/templates/form.phtml

    确保从 Review 模块中获取 form.phtml。其他模块中还有其他几个 form.phtml 文件。

    将文件复制到何处的示例:
    /var/www/magento2/app/design/frontend/Danny/orange/Magento_Review/templates/form.phtml

    将其复制到您自己的本地目录后,您可以继续进行更改:

    <div class="field review-field-nickname required">
            <label for="nickname_field" class="label"><span><?php echo $block->escapeHtml(__('Nickname')) ?></span></label>
            <div class="control">
                <input type="text" name="nickname" id="nickname_field" class="input-text" data-validate="{required:true}" data-bind="value: nickname()" />
            </div>
        </div>
        <div class="field review-field-summary">
            <label for="summary_field" class="label"><span><?php echo $block->escapeHtml(__('Summary')) ?></span></label>
            <div class="control">
                <input type="text" name="title" id="summary_field" class="input-text" data-validate="{required:false}" data-bind="value: review().title" />
            </div>
        </div>
        <div class="field review-field-text">
            <label for="review_field" class="label"><span><?php echo $block->escapeHtml(__('Review')) ?></span></label>
            <div class="control">
                <textarea name="detail" id="review_field" cols="5" rows="3" data-validate="{required:false}" data-bind="value: review().detail"></textarea>
            </div>
        </div>
    

    在上面的代码 sn-p 中,您会注意到第一个块“昵称”已保持原样。要求保留在那里。

    已修改其他两个框以删除该要求。我必须做的唯一更改是删除“必需”类并将 data-validate="{required:false}" 从 true 更改为 false。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      只需转到:

      app >> design >> frontend >> {{theme package}} >> {{theme}} >> template >> review >> form.phtml
      

      并从类中删除 required-entry,从您想要强制字段的字段中删除。

      【讨论】:

      • 如果我这样做,我会在尝试确认时收到以下错误:评论摘要不能为空;昵称不能为空;评论不能为空;
      • required-entry 类仅用于客户端验证。
      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 2012-11-15
      • 2012-03-09
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      相关资源
      最近更新 更多