约定是表单提交的name为Model的className首字母小写.数据库属性名
1. 确保数据是用户输入安全的(safe)使用rules方法批量设置Model属性为输入安全的
[php] view plaincopy
public function rules() {
return array(
array('username, password, gender,
email, tel', 'safe'),
)
}
2. 如果设置了场景(Scenario),确保该场景匹配输入安全的规则
[php] view plaincopy
public function rules() {
......
array('gender, email, tel', 'safe', 'on'=>'create,update'),
......
}
在属性设置前设置一下场景(Scenario),
[php] view plaincopy
...
$model->setScenario('create')
$model->attributes = $_POST['user']
...
条件:①、有两个字段分别是A和B ②、A有两个值分别是1和2需求是:当用户选择的A的值等于1的时候,B的值必须填写,当A的值等于2的时候,B的值不写也没关系。其中A必选。
首先在其关联model上加上下面这句规则
/**
* @inheritdoc
*/
public function rules()
{
return [
[['B'], 'requiredByASpecial'],
]
}
然后在该model里面去实现requiredByASpecial方法即可
/**
* 自定义验证B
*/
public function requiredByASpecial($attribute, $params)
{
if ($this->A== 1)
{
if ($this->B=== '')
$this->addError($attribute, "B的值不可以为空.")
}
}
上面的意思就是说当A等于1且B的值为空时,返回错误信息"B的值不可以为空"。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)