我使用的是CakePHP 3.6,并且我一直在使用文档中的form-control form-control-sm
向某些输入表单添加一些类(setTemplates
)。这样,我修改了input
生成的标签select
和Form->control()
如下
$this->Form->setTemplates([
'inputContainer' => '<div class="input form-group {{type}}{{required}}">{{content}}</div>',
'input' => '<input type="{{type}}" class="form-control form-control-sm" name="{{name}}"{{attrs}}/>',
'select' => '<select class="form-control form-control-sm" name="{{name}}"{{attrs}} />']);
echo $this->Form->control('name'); // This is an input
echo $this->Form->control('client_email_id'); // This is a select
但是,当考虑了belongsToMany
关联时,如何修改模板(如果可能)?因为Form->control()
帮助程序将同时生成标记input
和select
,并且似乎仅input
标记被修改。例如
echo $this->Form->control('projects._ids', ['options' => $projects]);
将生成
<div class="input form-group select">
<label for="projects-ids">Projects</label>
<input type="hidden" class="form-control form-control-sm" name="projects[_ids]" value="">
<select name="projects[_ids][]" multiple="multiple" id="projects-ids">...</select>
</div>
如您所见,form-control form-control-sm
类仅添加到input
标记中,而不添加到select
标记中。有人知道我该怎么做吗?
我想我可以创建一个全新的模板,但是我想知道是否可以使用Form-control()
函数。
答案 0 :(得分:2)
神奇的_ids
键将导致多选生成,它具有自己的模板,即selectMultiple
,默认情况下如下所示:
<select name="{{name}}[]" multiple="multiple"{{attrs}}>{{content}}</select>
您也必须修改它。
ps,您不能为select
控件使用自闭标签,因为现有内容({{content}}
)将不会显示,这将使表单生成混乱!