我刚写完第一篇文章所以请告诉我,如果我做错了什么! 我的问题:我想验证url给出的数据。
../日志/请求从= 2011-10-18T16:15:00&安培;要= 2011-10-18T16:30:00&安培; FMT = CSV
我刚刚发现有一个选项可以验证添加到模型中的规则。
public $validate = array(
'request_id' => array(
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Alphabets and numbers only'
),
)
);
在Controller中使用“ ModelName-> set($ params)”,之后“ ModelName-> validates()” - 函数应该提供如果有效或无效,请回答。我的解决方案与http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html解决方案之间的唯一区别 是我的控制器使用几个模型来收集响应的数据。 问题是“ validates()” - 函数只返回“有效”,即使我输入特殊字符或其他东西应该是“无效” - 由模型规则签名。 救命啊!
答案 0 :(得分:0)
这是不是的答案,但是为了协助OP而添加
我已经创建了一个测试控制器/模型来测试你的情况。我故意没有扩展'AppController'/'AppModel'来删除导致问题的任何代码。
我的测试模型(app / Model / Some.php)
class Some extends Model
{
public $name = 'Some';
public $useTable = 'false';
public $validate = array(
'request_id' => array(
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Alphabets and numbers only'
),
)
);
}
我的测试控制器(app / Controller / SomeController.php)
class SomeController extends Controller
{
public $uses = array('Some');
public function index()
{
$this->autoRender = false;
$params = array('Some' => array('request_id'=>'4*G/&2'));
$this->Some->set($params);
$result = $this->Some->validates();
debug($result);
$params = array('Some' => array('request_id'=>'AAAA'));
$this->Some->set($params);
$result = $this->Some->validates();
debug($result);
}
}
输出:
\app\Controller\SomeController.php (line 32)
false
\app\Controller\SomeController.php (line 37)
true
此测试设置似乎按计划运行,因此您可以尝试在应用程序中测试这些设置,以缩小问题的原因。也许某些行为附加到包含'beforeValidate()'回调的AppModel并禁用request_id字段的验证?