我现在大部分时间都在这一天,而且我不能让这个工作在我的生活中(我可以让它工作1/2但不完全正确)。
基本上,我试图在搜索表单字段上使用验证,如下所示:
if(isset($search['ApplicantAge']) && !empty($search['ApplicantAge'])) {
if ($this->Plan->validates()) {
$ApplicantAge = $search['ApplicantAge'];
}
}
这是我的型号代码:
...
'ApplicantAge' => array(
'required' => true,
'allowEmpty' => false,
'rule' => 'numeric',
'message' => 'A valid Age is required. Please enter a valid Age.'),
...
验证工作正常但是当我输入一个数字(数字)时,它会显示我的错误!当它是空白时不显示错误,当我输入字母时,它似乎有效:(??
有没有人知道这种奇怪行为的伎俩?
答案 0 :(得分:1)
尝试使用'notEmpty'规则而不是必需的/ allowEmpty规则。
'ApplicantAge' => array(
'applicant-age-numeric'=> array(
'rule' => 'numeric',
'message' => 'A valid Age is required. Please enter a valid Age.'
),
'applicant-age-not-empty'=> array(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank'
)
)
答案 1 :(得分:0)
首先,您为什么要使用该领域' ApplicantAge'当公约说它应该是得分较低的情况下?
回答您的问题,进行验证的最佳方式是http://book.cakephp.org/view/410/Validating-Data-from-the-Controller
另一种选择是做$ this->模型 - >保存($ data,array('验证' =>'仅'));
答案 2 :(得分:0)
手册根本没有帮助我:(
但你对validate =>的建议只有数组似乎已经完成了这个伎俩。这就是我的工作方式:
plans_controller.php 的
if (isset($search['ApplicantAge'])) {
$this->Plan->save($search, array('validate' => 'only'));
if ($this->Plan->validates($this->data)) {
$ApplicantAge = $search['ApplicantAge'];
}
}
plan.php(模特)
var $validate = array(
'ApplicantAge' => array(
'applicant-age-numeric' => array(
'rule' => 'numeric',
'message' => 'A valid Age is required. Please enter a valid Age.'),
'applicant-age-not-empty' => array(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank'),
),
现在,如果ApplicateAge字段中未输入任何数据,则会显示正确的消息。如果输入非数字,则还会显示正确的消息。
这比我想象的更具挑战性!
答案 3 :(得分:0)
为了记录,我会对我之前接受的帖子进行更正。我几乎不知道validate =>只有在save()上才真正将数据保存到我的计划表中。
我能够使用set()使其正常工作。以下是完全解决问题的代码:
plans_controller.php
if (isset($search['ApplicantAge'])) {
$this->Plan->set($this->data);
if ($this->Plan->validates()) {
$ApplicantAge = $search['ApplicantAge'];
}
}
plan.php(模特):
var $validate = array(
'ApplicantAge' => array(
'applicant-age-numeric' => array(
'rule' => 'numeric',
'message' => 'A valid Age is required. Please enter a valid Age.'),
'applicant-age-not-empty' => array(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank'),
)