【问题标题】:cakephp 3 add default class to inputscakephp 3 将默认类添加到输入
【发布时间】:2017-09-30 17:02:09
【问题描述】:

我正在尝试为我的 cakephp 3 应用程序中的每个输入添加一个默认类。 我想要的示例:

输入: <echo $this->Form->control('email');

输出: <input class="form-control" class="is-invalid"/>

期望的输出: <input class="form-control is-invalid"/>

为此我编辑了 FormHelper 的输入模板

$this->viewBuilder()->setHelpers([
        'Form' => [
            'templates' => [
                'input' => '<input class="form-control" type="{{type}}" name="{{name}}"{{attrs}}/>'
            ]
        ]
    ]);

问题是{{attrs}} 可能包含其他类。你知道怎么做吗?

【问题讨论】:

    标签: cakephp cakephp-3.0 cakephp-3.x


    【解决方案1】:

    已解决:D 创建一个 FormHelper 来覆盖方法控制并添加类。

    class BootstrapFormHelper extends FormHelper{
        public function control($fieldName, array $options = []){
            if($this->request->is('post') && !$this->isFieldError($fieldName)){
                $options['class'] = 'form-control is-valid';
            }else{
                $options['class'] = 'form-control';
            }
            return parent::control($fieldName, $options);
        }
    }
    

    然后更改您的 AppView

    class AppView extends View{
        public function initialize()
        {
            $this->loadHelper(
                'Form', [
                    'className' => 'BootstrapForm',
                ]
            );
        }
    }
    

    【讨论】:

    【解决方案2】:

    除了 Matoran 的回答之外,我还检查了在创建表单控制元素时是否提供了另一个“类”,并将其包含在覆盖类中。对我来说,我仍然希望 form-control 作为一个类,但还需要在生成表单时添加类 datepickerdatetimepicker

    class BootstrapFormHelper extends FormHelper{
        public function control($fieldName, array $options = []){
            if($this->request->is('post') && !$this->isFieldError($fieldName)){
                $options['class'] = (isset($options['class'])) ? 'form-control is-valid '.$options['class'] : 'form-control is-valid';
            }else{
                $options['class'] = (isset($options['class'])) ? 'form-control '.$options['class'] : 'form-control';
            }
            return parent::control($fieldName, $options);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2023-03-20
      • 2021-08-13
      相关资源
      最近更新 更多