ビューに次のようなフィールドがあるとします。
<li class="bigfield">
<?php echo $form->input('phone', array(
'placeholder' => 'Phone',
'label' => false,
'between' => '<br />'
)); ?>
</li>
このフィールドに検証ルールがあり、検証が失敗した場合、次の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>
エラーメッセージdivをフィールド自体と同じ<li>で内部に配置するのではなく、ページの別の部分全体に移動するようなことをしたいと思います。これを行う最も簡単な方法は何ですか?
古い投稿を更新しています。
検証エラーは自動的にビューに渡されます(@Angel S. Morenoが指摘)。
$this->validationErrors
コントローラー内 :
$this->set('validationErrorsArray', $this->ModelName->invalidFields());
$validationErrorsArray
あなたの意見で。
UPDATE(2014年9月):
ビューから
CakePHP 2.3から view から検証エラー配列にアクセスできます:
$this->validationErrors;
コントローラーから
コントローラにデータを保存しようとした場合、次の方法で検証エラーにアクセスできます。
$this->ModelName->validationErrors;
保存する前にデータを検証する場合は、次のようにします。
$this->ModelName->set($this->request->data);
if ($this->ModelName->validates()) {
$this->ModelName->save();
} else {
$errors = $this->ModelName->validationErrors;
// handle errors
}
コントローラから使用できます:
$this->Modelname->validationErrors['TheFieldYouWantToDisplay'] = 'This is not correct'
あなたの場合、コントローラでは次のようになります:
$this->Appointment->validationErrors['email'] = 'Error message'
このコードは、オンザフライでカスタムエラーメッセージを作成するためのものです。しかし、モデルで$ validateを定義して、brancerがそれをどのように記述しているかのようにすることもできます。