所需的领域,但并非总是如此 - Yii2

时间:2017-01-12 12:26:23

标签: php yii2

是否有可能以一种形式要求某个字段,而另一种形式则不然?我有两种不同的形式,不同的模型,有一个共同的领域,我希望它在第一个中是必需的,而在另一个中是可选的。

2 个答案:

答案 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;