根据CakePHP中的设置验证长度

时间:2014-01-26 16:02:34

标签: validation cakephp cakephp-1.3

请注意,我正在使用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;。

1 个答案:

答案 0 :(得分:2)

CakePHP book中详细说明了数据验证。

如果您阅读Custom Validation Rules area,您会看到一个示例,它们从数据库中提取数据以用于验证 - 完全符合您的要求。

(这是Custom Validation Rules for 1.3