Nic*_*ick 20 validation cakephp
假设我在视图中看到这样的字段:
<li class="bigfield">
<?php echo $form->input('phone', array(
'placeholder' => 'Phone',
'label' => false,
'between' => '<br />'
)); ?>
</li>
Run Code Online (Sandbox Code Playgroud)
如果我在此字段上有验证规则并且验证失败,我会看到以下HTML:
<li class="bigfield">
<div class="input text required error">
<br>
<input name="data[Appointment][email]" type="text" placeholder="Email"
maxlength="45" value="" id="AppointmentEmail" class="form-error">
<div class="error-message">Please enter a valid email address</div>
</div>
</li>
Run Code Online (Sandbox Code Playgroud)
我很喜欢做这样的事情的错误消息的div移动到页面的整个不同的组成部分,而然后用相同<LI>与字段本身里面有它.这样做最直接的方法是什么?
Kis*_*dan 27
只是更新旧帖子.
验证错误会自动传递给视图(正如@Angel S. Moreno所指出的那样)
$this->validationErrors
Run Code Online (Sandbox Code Playgroud)
ban*_*cer 22
$this->set('validationErrorsArray', $this->ModelName->invalidFields());
Run Code Online (Sandbox Code Playgroud)
你会有$validationErrorsArray
自己的观点.
更新(2014年9月):
从视图来看
从CakePHP 2.3,您可以从视图中访问验证错误数组:
$this->validationErrors;
Run Code Online (Sandbox Code Playgroud)
来自控制器
如果您尝试在控制器中保存数据,则可以通过以下方式访问验证错误:
$this->ModelName->validationErrors;
Run Code Online (Sandbox Code Playgroud)
如果要在保存之前验证数据,请执行以下操作:
$this->ModelName->set($this->request->data);
if ($this->ModelName->validates()) {
$this->ModelName->save();
} else {
$errors = $this->ModelName->validationErrors;
// handle errors
}
Run Code Online (Sandbox Code Playgroud)