请注意,我正在使用CakePHP 1.3。
我想验证模型的几个字段的长度,具体取决于管理员在数据库中定义的限制。
我有一个名为Setting的模型,通过它我可以获取maxLength值。我的想法是使用beforeValidate方法来获取它们,然后相应地设置$ validate参数:
<?php
class Mod extends AppModel
{
var $belongsTo = array('IBelong');
var $hasMany = array('IHaz');
function beforeValidate() {
// Fetch the maxLength settings : requestAction to the SettingsController ?
// Somehow do $this->Setting->find... ?
// Then set the $validate attribute
}
}
?>
我可以使用什么方法获取beforeValidate回调中的maxLength值?
谢谢!
编辑:在Dave的评论之后,这是我目前正在做的事情(并且它有效):
<?php
class Mod extends AppModel
{
var $belongsTo = array('IBelong');
var $hasMany = array('IHaz');
function beforeValidate() {
App::import('Model', 'Setting');
$setting = new Setting();
// Use $setting->find... to fetch the settings
// Set the $validate attribute to validate using the settings
}
}
?>
但是,我仍然不确定这是否是正确的方法。
请注意,我有几个要验证的属性,我希望避免为了获得最佳效果而多次调用$ setting-&gt;。
答案 0 :(得分:2)
CakePHP book中详细说明了数据验证。
如果您阅读Custom Validation Rules area,您会看到一个示例,它们从数据库中提取数据以用于验证 - 完全符合您的要求。