cakephp 3:更改类输入错误

时间:2015-05-01 06:52:01

标签: forms cakephp cakephp-3.0

我根据文档构建了表单模板。似乎一切都很好,直到我得到字段错误。现在我有两个问题:

  1. 如何在出现错误时更改表单字段的类名?
  2. 解决方案:
    $this->loadHelper('Form', [ 'templates' => 'your_template_file', 'errorClass' => 'your-class', ]);

    1. 如果字段出错,如何在cakephp的错误消息中设置escape => false?因为我在该div中有图标,例如
    2. <div class="error-message"><i class="fa fa-times"></i> My error</div>
      

      好吧,我得到了解决方案的一部分。为了逃避HTML,我可以将$this->Form->error('field', null, ['escape' => false]);放在所有字段中,但这是一项艰巨的手动任务。我想保持所有字段错误的默认转义。我可以编辑FormHelper.php类。但是,我认为这不是一个好主意。

      我的表单模板是:

      'formStart'              => '<form {{attrs}} class="form-horizontal" novalidate>',
      'inputContainer'         => '{{content}}',
      'input'                  => '<input type="{{type}}" name="{{name}}" {{attrs}} class="form-control"/>',
      'checkbox'               => '<input type="checkbox" value="{{value}}" name="{{name}}" {{attrs}}/>',
      'textareaContainerError' => '{{content}}',
      'textarea'               => '<textarea name="{{name}}" {{attrs}} class="form-control"></textarea>',
      'select'                 => '<select name="{{name}}" {{attrs}} class="form-control">{{content}}</select>',
      'button'                 => '<button {{attrs}} class="btn btn-primary">{{text}}</button>',
      'nestingLabel'           => '{{input}}',
      'formGroup'              => '{{input}}',
      

2 个答案:

答案 0 :(得分:1)

问题的第二部分:您可以在下面的代码中扩展FormHelper,以便 escape 默认设置为 false

// extended FormHelper, this goes in src/View/Helper
namespace App\View\Helper;
use Cake\View\Helper;

class MyFormHelper extends Helper\FormHelper
{
    public function error($field, $text = null, array $options = []) 
    {
        if (!isset($options['escape'])) {
            $options['escape'] = false;
        }

        return parent::error($field, $text, $options);
    }
}

接下来在AppController.php

中为此助手创建别名
public $helpers = [
    'Form' => ['className' => 'MyForm']
];

这也允许您添加自己的更多自定义,并且您可以随时返回到FormHelper的默认实现,只需从AppController.php中删除该别名。

答案 1 :(得分:0)

对于那些想要一个简单的解决方案&#39;要转义某些字段上的错误消息,您只能将转义选项设置为false:

   <?= $this->Form->input('email', [
                                    "label" => "Email",
                                    "error" => [
                                        "escape" => false
                                    ]
                                ]) ?>