CakePHP:错误消息未显示验证字段

时间:2012-10-11 10:20:07

标签: validation cakephp

我是CakePHP的新手。我对这个观点有两个问题。

  • 文本字段名称和文本字段区域之间存在换行符。我试图通过'div' => false,但这不起作用。如何删除换行符并在同一行显示?

  • 我已将验证规则添加到此文本字段,但是当我单击“保存”时,错误消息未显示。除了在我的模型中添加validates之外,我是否还需要做其他事情?

以下是我的观点input.ctp

echo $this->Form->input('fileId', array(
    'type'=>'text', 
    'style' => 'width: 200px; height: 15px'
));
echo $this->Form->end('Save Post');

这是我的模特:

var $validate = array(
    'fileId' => 'notEmpty',
    'message' => 'Should not be empty'
    );

控制器:

if ($this->request->is('post')) {
    $data = $this->request->data;
    if ($data) {
        // saving the data
    }
}

4 个答案:

答案 0 :(得分:2)

要验证您的数据,您应该具有以下内容:

public $validate = array(
    'fileId' => array(
        'rule' => 'notEmpty',
        'message' => 'Should not be empty'
    )
);

您的Controller

if ($this->request->is('post')) {
    if ($this->Model->save($this->request->data)) {
        // saved
    }
}

如果无法保存,错误将显示在相应字段附近。或者您可以使用$this->Model->validationErrors数组自定义错误。

对于换行符问题,请确保200px执行自动换行符,因为这些元素位于何处。

答案 1 :(得分:2)

如果您未使用save,则需要使用validates手动验证数据。在这种情况下,您还需要set数据。对于例如在你的控制器

   $this->ModelName->set($data);
   $this->Modelname->validates();

答案 2 :(得分:1)

调用validates()或save()时会出现

验证错误。 完全设置你的行动。 如果您没有使用输出字段,标签和错误的FormHelper :: input,您还需要使用$this->Form->error('fileId')手动输出错误。

对于表单试试这个: 将此添加到您的CSS

label { float: left; 
        width: 150px; 
        display: block; 
        clear: none; 
        text-align: left; 
        vertical-align: middle; 
        padding-right: 0px;} 

.xg { 
display: block; 
float:left; 
} 

echo $this->Form->input('fileId', array('div'=>'xg','type'=>'text', 'style' => 'width: 200px; height: 15px'));
echo $this->Form->end('Save Post');

答案 3 :(得分:0)

您可以按照以下方法自定义输出:

<tr>
    <td><label>Username</label></td>
    <td>
        <?php echo $this->Form->input('username',array('label'=>false,'div'=>false,'error'=>false)); ?>
    </td>
<td><?php echo $this->Form->error('username'); ?></td>
</tr>

此方法将为您输出相同的行。