2012-04-15 46 views
4

所以我明白,如果您使用Model的验证器验证它,CakePHP会自动将错误消息加载到视图中。我正在尝试设置日期Dropbox验证,并且我想控制错误消息显示的位置。如何控制在CakePHP表单中显示错误消息div的位置?

提交验证表单前:

<div class="input text required"> 
<label for="UserEmail">Email</label> 
<input name="data[User][email]" maxlength="50" type="text" id="UserEmail"> 
</div> 

验证后,错误显示在此处:

<div class="input text required error"> 
<label for="UserEmail">Email</label> 
<input name="data[User][email]" maxlength="50" type="text" value="" id="UserEmail" class="form-error"> 
<div class="error-message">An email is required</div> 
</div> 

是否有可能控制它,我可以把它出现在这里?

<div class="input text required error"> 
<div class="error-message">An email is required</div> 
<label for="UserEmail">Email</label> 
<input name="data[User][email]" maxlength="50" type="text" value="" id="UserEmail" class="form-error"> 
</div> 

或者在这里:

<div class="error-message">An email is required</div> 
<div class="input text required error"> 
<label for="UserEmail">Email</label> 
<input name="data[User][email]" maxlength="50" type="text" value="" id="UserEmail" class="form-error"> 
</div> 

回答

5

视图:

1)禁用自动错误显示:

echo $this->Form->create('Mymodel', array(
    'inputDefaults' => array(
     'error' => false 
    ) 
)); 

2)$this->validationErrors

获取当前表单错误

3)通过$this->Form->error()

更新: 我误解了您的原始问题,您可以使用自己的标记或Cake的默认标记显示它们。的元素的顺序可以通过指定任一创建()调用(适用于所有字段)或输入()调用(用于单个字段):

echo $this->Form->create('Mymodel', array(
    'inputDefaults' => array(
     'format' => array('before', 'error', 'label', 'between', 'input', 'after') 
    ) 
)); 

上面将放置error DIV之前label股利。您可以按照您喜欢的任何顺序重新排列该阵列。

+0

谢谢,但我想利用CakePHP的错误股利。它将错误类添加到围绕输入的div中。我怎样才能利用它呢? – Strawberry 2012-04-16 21:31:18

+2

'echo $ this-> Form-> error('email');'看看我发布的使用选项链接。 – Costa 2012-04-17 01:56:41

+0

我的意思是这行''div class =“input text required error”>' – Strawberry 2012-04-17 06:48:13

0

我能得到这个为password_confirm场,也许它可以帮助

  echo $this->Form->input('username'); 
     echo $this->Form->input('password'); 

     echo $this->Form->input('password_confirm', array(
      'type' => 'password', 
      'div'=>'control-group', 
      'error' => array('attributes' => array('wrap' => 'div','class' => 'help-inline')) 
     )); 

     echo $this->Form->input('group_id', array(
      'options' => array('2' => 'Admin', '3' => 'Publisher') 
     )); 
     echo $this->Form->input('publisher_id', array(
      'options' => $publishers 
     )); 

     echo $this->Form->input('active');