카테고리 없음

[yii2] Yii2 : 비 시나리오 필드가 저장되지 않음

필살기쓰세요 2021. 2. 8. 16:07

Yii2에서 특정 시나리오에 규칙을 적용하려면 다음과 같이 규칙의 on 속성을 지정할 수 있습니다.

 public function rules()
    {
            return [
            
                        //rule applied only in scenario 'insert2'
                                    [['first_name','status'], 'required','on' => 'insert2'],
                                    
                                    
                                                //rule applied  in all scenarios 
                                                            ['email','safe'],
                                                            
                                                                        //rule applied only in scenario 'insert3'
                                                                                    [['first_name','status','email'], 'required','on' => 'insert3'],       
                                                                                            ];
                                                                                                }
                                                                                                

이제 $model->scenario = "insert2"컨트롤러에서 지정하면 first_name 및 status가 필요 하며 ['email','safe']여기에도 규칙이 적용 되었으므로 값을 주면 이메일이 저장 됩니다.

$model->scenario = "insert3"컨트롤러에서 지정하면 이제 first_name, status 및 email 이 필수 필드이며 규칙 ['email','safe']도 적용됩니다.

public function scenarios() {..여기서는 사용할 수 없습니다 .

에서 http://www.yiiframework.com/doc-2.0/guide-structure-models.html#validation-rules

-------------------

에서 YII 2로드 () 문서 :

채워지는 데이터는 setAttributes ()에 의해 안전 검사를받습니다.

이제 setAttributes () 서명 :

public void setAttributes ( $values, $safeOnly = true )

여기서로 $safeOnly설정 true하면 안전한 속성에 대해서만 할당이 수행되어야합니다. 안전한 속성은 현재 $ scenario의 유효성 검사 규칙과 관련된 속성입니다.

따라서 email시나리오에 포함되어야합니다.



출처
https://stackoverflow.com/questions/39920308