我正在尝试在我的cakephp 3 app中为每个输入添加一个默认类。 我想要的例子:
输入:
<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}}
可能包含其他类。你知道怎么做吗?
答案 0 :(得分:1)
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',
]
);
}
}
答案 1 :(得分:0)
除了Matoran的答案,我还检查了创建表单控件元素时是否提供了另一个“类”,并将其包括在override类中。对我来说,我仍然希望将form-control
作为类,但在生成表单时还需要添加类datepicker
或datetimepicker
。
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);
}
}