需求是:当用户选择的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的值不可以为空"。
直接在Controller里面getModel(Model.class).save()即可约定是表单提交的name为Model的className首字母小写.数据库属性名
1、首先我们在 model 里面定义一下场景 类名必须是 scenarios()public function scenarios()
{
return [
'create' =>['title', 'image', 'content'],
'update' =>['title', 'content'],
]
}
2、好的,如上所示,场景的基本设置我们就已经完成一部分了,下面我们设置 rules() ,调用场景我们用 on 关键字
[['title', 'content'], 'required', 'on' =>['create', 'update']],
[['image'], 'required', 'on' =>'create'],
[['image'], 'image', 'enableClientValidation' =>true, 'maxSize' =>1024, 'message' =>'您上传的文件过
大', 'on' =>['create', 'update']],
on 指定的就是场景,一个场景用字符串,多个场景用数组
3、好的,model 里面我们就设置完毕了 现在开始调用吧。 Controller 里面
$model = $this->findModel($id)
$model->setScenario('update')or $model->scenario = 'update'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)