2017-01-12 1 views
1

Gibt es eine Möglichkeit, dass ein Feld in einer Form benötigt wird und in der anderen nicht? Ich habe zwei verschiedene Formen, verschiedene Modelle, die ein Feld gemeinsam haben, und ich möchte, dass es in der ersten und optional in der anderen benötigt wird.Feld erforderlich, aber nicht immer - Yii2

+8

Verwenden [Szenario] (http://www.bsourcecode.com/yiiframework2/yii2-0-scenarios/) –

+0

http://www.bsourcecode.com/ yiiframework2/yii2-0-Szenarien / –

Antwort

2

Es ist besser Szenarien hinzufügen, wie Konstanten zum Beispiel anstelle von fest codierten Zeichenketten, zu modellieren:

const SCENARIO_CREATE = 'create'; 

Dann Sie es wie folgt verwenden können:

[['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; 
} 

Auf diese Weise müssen Sie alle sicheren Attribute für jedes Szenario für verschiedene Aktionen angeben.

Set Szenario im Modell

$model = new User; 
$model->scenario = User::SCENARIO_CREATE; 
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], 
    ]; 
} 
Verwandte Themen