我有一个扩展 Yii CFormModel 的模型,我想定义一个验证规则来检查属性值是否为空 - 如果是这样- 将属性名称设置为空字符串,而不是更改输入值。
这种情况是否可能,或者验证规则仅用于警告和/或输入值的更改?
任何帮助将不胜感激。
下面是我的模型的示例代码:
class LoginForm extends CFormModel
{
public $firstName;
public $lastName;
public function rules()
{
return array(
array('firstName, lastName', 'checkIfEmpty', 'changeAttributeName'),
);
}
// some functions
}
最佳答案
不确定您的用例是否非常优雅,但以下应该可行:
class LoginForm extends CFormModel
{
public $firstName;
public $lastName;
public function rules()
{
return array(
array('firstName, lastName', 'checkIfEmpty'),
);
}
public function checkIfEmpty($attribute, $params)
{
if(empty($this->$attribute)) {
unset($this->$attribute);
}
}
// some functions
}
根据 hamed 的回复,另一种方法是使用 beforeValidate()
函数:
class LoginForm extends CFormModel
{
public $firstName;
public $lastName;
protected function beforeValidate()
{
if(parent::beforeValidate()) {
foreach(array('firstName, lastName') as $attribute) {
if(empty($this->$attribute)) {
unset($this->$attribute);
}
}
}
}
}
关于php - 如果表单属性值为空,则使用 Yii 规则验证更改属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28878371/