CakePHP的新功能 - 我正在浏览网站上的文档,试图为我正在创建的模型进行一些基本的数据验证。这可能是我对CakePHP的许多问题中的第一个。
在CakePHP Book中,验证规则似乎指定了两种不同的方法来确保字段不为空 - AllowEmpty
和NotEmpty
。
问题 - 这两者之间是否存在切实差异? CakePHP声明验证规则应该出现在您的模型或控制器中 - 是否更适合模型,另一个适用于控制器?这本书没有说明这一点。我猜这是一个较旧的方法,它仍然存在?
是什么给出的?我应该使用特定的一个或两个,还是不重要?
编辑:我决定检查CakePHP 1.3 class documentation(检查allowEmpty
属性的默认值),但它甚至都没有出现。它不在source code ......是否有我遗漏的东西?
答案 0 :(得分:10)
欢迎来到蛋糕。我希望你喜欢它。
这绝对是Cake的一个陌生方面。
notEmpty
本身就是一条规则。您可以在$validation
属性中定义它。您可以为此验证失败时分配消息。您可以将其视为任何其他验证规则。
allowEmpty
是另一个验证规则的选项,通常为不 notEmpty
。 它本身并不是验证规则。例如,这将允许您定义varchar
字段允许空字符串,''或字符串不超过20个字符。
编辑:
这是一些代码
// model validation using 'notEmpty'
$validation = array(
'fieldName' => array(
'notEmpty' => array(
'rule' => 'notEmpty',
'message' => 'This value may not be left empty!'
),
... // other rules can go here
),
... // other fieldName can go here
);
// model validation using 'allowEmpty' to create an optional field
$validation = array(
'fieldName' => array(
'maxLength' => array(
'rule' => array('maxLength', 20),
'message' => 'This field may only contain 20 characters!',
'allowEmpty' => true // we'll also accept an empty string
),
... // other rules can go here
)
... // other fieldName can go here
);
答案 1 :(得分:0)
它非常简单地在cakephp中进行服务器端验证
以下是同一字段的验证(noEmpty,maxlength)的代码。
'fieldName' => array(
'rule' => array('maxLength', 20),
'message' => 'fieldName should be less than 20 characters',
'allowEmpty' => true
),
'fieldName' => array(
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => 'Please enter field name',
),
),
答案 2 :(得分:0)
我发现了一个必须使用'allowEmpty'=>的案例false而不是rule => '不是空的'。我有一个带有上传输入(type ='file')的表单,其验证规则为notEmpty,并且即使调试器显示加载了文件[]数组,它仍然无法通过验证。当我删除'notEmpty'规则并设置allowEmpty => false,它工作,在没有选择文件时抛出错误,并在选择一个文件时接受它。 它必须与值为数组而不是文本值有关。