我刚刚写了我的第一篇文章,如果我做错了什么请告诉我!我的问题:我想验证url给出的数据。
. ./日志/请求吗? = 2011 - 10 - 18岁t16:15:00& = 2011 - 10 - 18 - t16:30:00& fmt = csv
我刚刚发现有一个选项可以使用添加到模型中的规则进行验证。
public $validate = array(
'request_id' => array(
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Alphabets and numbers only'
),
)
);
在控制器中使用"ModelName->set($params)",然后使用"ModelName->validates()"函数,无论其是否有效,都应该提供答案。我的解和http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html的解的唯一不同之处我的控制器使用几个模型来收集响应的数据。问题是,"validates()"函数只返回"有效",即使我输入了特殊字符或其他应该"无效"的东西-由模型规则签名。的帮助!
这是不是的回答,而是为了协助OP;
我已经创建了一个测试控制器/模型来测试您的情况。我故意没有扩展'AppController'/'AppModel',以删除这些代码中的任何导致问题的代码。
我的测试模型(app/模型/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
这个测试设置似乎按照计划工作,所以您也可以尝试在您的应用程序中测试这些设置,以缩小问题的原因。也许一些行为附加到你的AppModel包含一个'beforeValidate()'回调,并禁用request_id字段的验证?