是否有可能以一种形式要求某个字段,而另一种形式则不然?我有两种不同的形式,不同的模型,有一个共同的领域,我希望它在第一个中是必需的,而在另一个中是可选的。
答案 0 :(得分:3)
http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios
public function rules()
{
return [
// username, email and password are all required in "register" scenario
[['username', 'email', 'password'], 'required', 'on' => self::SCENARIO_REGISTER],
// username and password are required in "login" scenario
[['username', 'password'], 'required', 'on' => self::SCENARIO_LOGIN],
];
}
答案 1 :(得分:2)
最好将方案作为常量添加到模型而不是硬编码字符串,例如:
const SCENARIO_CREATE = 'create';
然后你可以像这样使用它:
[['email','password'], 'required', 'on' => self::SCENARIO_CREATE],
Another way is to describe it in scenarios() method:
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_CREATE] = ['email', 'password'];
return $scenarios;
}
这样,您需要为不同的操作指定每个方案的所有安全属性。
在模型中设置方案
$model = new User;
$model->scenario = User::SCENARIO_CREATE;