And*_*e S 3 cakephp cakephp-3.0
有没有办法加载<label>后<input>.默认情况下,CakePHP的负载<label>之前<input>是这样的:
PHP代码:
<?php echo $this->Form->input('email', ['placeholder' => 'Email']); ?>
Run Code Online (Sandbox Code Playgroud)
生成代码:
<label for="email">Email</label>
<input name="email" placeholder="Enter your email" id="email" type="email">
Run Code Online (Sandbox Code Playgroud)
但是,当我想这样的时候,我该怎么做:
<input name="email" placeholder="Enter your email" id="email" type="email">
<label for="email">Email</label>
Run Code Online (Sandbox Code Playgroud)
除了黑客之外还有办法解决这个问题吗?
ndm*_*ndm 11
您可以使用模板功能,负责此操作的模板是formGroup默认情况下的模板{{label}}{{input}}.
echo $this->Form->input('email', [
'placeholder' => 'Email',
'templates' => [
'formGroup' => '{{input}}{{label}}'
]
]);
Run Code Online (Sandbox Code Playgroud)
还可以通过遵循作为类型名称的命名约定来定义每个输入类型的表单组tempaltes,然后是FormGroup.所以对于email那种类型emailFormGroup.
echo $this->Form->create(null, [
'templates' => [
'emailFormGroup' => '{{input}}{{label}}',
'textFormGroup' => '{{input}}{{label}}'
// ...
]
]);
Run Code Online (Sandbox Code Playgroud)
这样,您可以轻松地将此选项全局应用于特定类型.
另请参阅Cookbook> Form Helper>自定义模板FormHelper使用
当然你也可以使用CSS,那里有桌子
.input.email {
display: table;
width: 100%;
}
.input.email input {
display: table-header-group;
}
.input.email label {
display: table-footer-group;
}
Run Code Online (Sandbox Code Playgroud)
弹性盒订购
.input.email {
display: flex;
flex-flow: column;
}
.input.email input {
order: 1;
}
.input.email label {
order: 2;
}
Run Code Online (Sandbox Code Playgroud)
等等...