Wol*_*ine 1 error-handling cakephp-2.0
在我的CakePHP项目中,我想显示错误消息,但它不起作用.
当我提交时,我希望它显示如下错误消息:"此字段是必需的",但默认情况下显示"请填写此字段".我改变了消息,但它没有改变核心.
我的视图,模型和控制器代码如下:
add_district.ctp:
<div class="pg_title txtLeft">Add District</div>
<?php echo $this->Form->create('Admins', array('action' => 'add_district'));?>
<table>
<tbody>
<tr>
<td><label>District Name<span class="red required">*</span></label></td>
<td><?php echo $this->Form->input('District.district_name',array('label'=>false,'div'=>false,'size'=>50,'style'=>'width:330px;')); ?></td>
</tr>
<tr>
<td colspan="2" align="right" style="padding-right: 113px;"><input type="reset" value="Reset"> | <?php echo $this->Form->submit('ADD', array('div' => false));?></td>
</tr>
</tbody>
</table>
<?php print $this->Form->end();?>
<div class="clear"></div>
Run Code Online (Sandbox Code Playgroud)
型号: District.php
<?php
App::uses('AppModel', 'Model');
/**
* Admin Login Model
*
*/
class District extends AppModel
{
public $name='District';
public $usetables='districts';
public $validate = array(
'district_name' => array(
'rule' => 'notEmpty',
'allowEmpty' => false,
'message' => 'This field is required'));
}
?>
Run Code Online (Sandbox Code Playgroud)
我的控制器代码是(AdminController.php):
public function add_district()
{
$this->layout='common';
$this->District->create();
$this->District->set($this->data);
if(empty($this->data) == false)
{
if($this->District->save($this->data))
{
$this->Session->setFlash('District Added Successfully.');
$this->redirect('add_district');
}
}
else
{
$this->set('errors', $this->District->invalidFields());
}
}
Run Code Online (Sandbox Code Playgroud)
该消息"请填写此字段"来自浏览器本身,而不是来自CakePHP.
那么Firefox和Chrome(以及可能还有其他浏览器?)会自动检查标记为必需的字段,然后在提交表单时,甚至在将表单数据发送到服务器之前,如果未填写必填字段,浏览器将提供您的默认弹出消息:"请填写此字段".
这是浏览器的默认行为,与您的代码无关.如果您想检查Cake错误消息是否正常,请尝试在Safari(从版本6.0.2开始,似乎没有'自动检测必需字段'功能).在Safari中,您应该收到自己的CakePHP错误消息.
您还可以通过将autovalidate属性传递为表单本身的false来阻止浏览器中的错误检查 - 请参阅禁用HTML5表单元素的验证
| 归档时间: |
|
| 查看次数: |
4011 次 |
| 最近记录: |