use*_*089 2 forms validation post cakephp
我有问题..我尝试填写表单然后单击提交按钮然后它显示表单错误但所有这些文本框字段变为空白,可以显示表单错误.我希望它在验证之前变成相同的值.就像我不想在验证后清除/清空值.
我做了这样的事情:(在视图中)
<div class="regform">
<div id="formleft">First Name<asterix>*</asterix></div>
<div id="formright"><?php echo $this->Form->input('First Name', array(
'name' => 'firstname',
'label'=> false
)); ?></div>
<div id="formerror"><?php echo $this->Form->error('Customer.firstname'); ?></div>
</div>
Run Code Online (Sandbox Code Playgroud)
(在模型中):
'firstname' => array(
'firstname_cant_be_empty' => array(
'rule' => 'notEmpty',
'message' => 'First Name must be filled.'
),
'firstname_must_be_alphabet' => array(
'rule' => '/^[a-z]{3,}$/i',
'message' => 'First Name is only letters. No numbers, Dotted, etc.'
)
)
Run Code Online (Sandbox Code Playgroud)
(在控制器中):
if ($this->request->is('Post')) {
if ($this->Customer->save($this->request->data) && $this->Customer->validates()) {
//debug($this->request->data);
$this->Session->setFlash('good!');
//$this->redirect('/');
} else {
$this->Session->setFlash('Fill up form now!');
$this->data = $this->request->data;
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在您看来:
<div id="formright"><?php echo $this->Form->input('First Name', array(
'name' => 'firstname',
'label'=> false
)); ?></div>
Run Code Online (Sandbox Code Playgroud)
特别:
$this->Form->input('First Name', array(
Run Code Online (Sandbox Code Playgroud)
和
'name' => 'firstname',
Run Code Online (Sandbox Code Playgroud)
这导致生成的表单元素如下:
<input id="UserFirstname" type="text" maxlength="50" name="firstname">
Run Code Online (Sandbox Code Playgroud)
您的表单输入应该是这样的:
echo $this->Form->input('firstname', array(
'label'=> false
));
Run Code Online (Sandbox Code Playgroud)
注意差异.这会导致表单元素生成为:
<input id="UserFirstname" type="text" maxlength="50" name="data[User][firstname]">
Run Code Online (Sandbox Code Playgroud)
主要区别在于name="data[User][firstname]".这会导致数据以熟悉的$ this-> request-> data数组格式发布,这也允许在表单错误时重新填充表单.
| 归档时间: |
|
| 查看次数: |
4574 次 |
| 最近记录: |