[英]yii2 exist validator with scenario does not work
定義了方案“ withAppId”,並將“ application_id”的規則鏈接到其中,向表單添加了ActiveField,但模型未保存該字段。 我做錯了什么?
控制器:
public function actionIndex()
{
$post = Yii::$app->request->post();
$model = new Option();
$model->scenario = 'withAppId';
if ($model->load($post) && $model->save()) {
Yii::$app->session->addFlash('success', 'Запись успешно сохранена.');
return $this->redirect(['index']);
} else {
//form rendering
}
}
模型:
public function rules()
{
return [
['key', 'trim'],
['key', 'required'],
['key', 'string', 'max' => 100],
['option', 'string', 'max' => 255],
['type', 'required'],
['type', 'in', 'range' => array_keys(self::$TYPES)],
['uploaded', 'image',
'extensions' => 'png, jpg, jpeg, gif',
'maxWidth' => 1000,
'maxHeight' => 1000,
'maxSize' => 1024*1024,
],
['application_id', 'exist',
'targetClass' => Application::className(),
'on' => ['withAppId'],
],
];
}
public function scenarios()
{
$cenarios = parent::scenarios();
$cenarios['withAppId'] = $cenarios[parent::SCENARIO_DEFAULT];
return $cenarios;
}
當'on' => ['withAppId'],
被刪除時,保存工作正常。
您的$cenarios[parent::SCENARIO_DEFAULT]
為空。 嘗試這個:
public function scenarios()
{
return [
self::SCENARIO_DEFAULT => ['key', 'option', 'type', 'uploaded'],
'withAppId' => ['key', 'application_id', 'option', 'type', 'uploaded']
];
}
或者您可以on
條件寫規則。 doc 方案方法有一部分:
此方法的默認實現將返回在[[rules()]]聲明中找到的所有方案。 名為[[SCENARIO_DEFAULT]]的特殊情況將包含在[[rules()]]中找到的所有屬性。 每個方案都將與適用於該方案的驗證規則所驗證的屬性相關聯。
注意:如果您附加父場景,例如: $cenarios = parent::scenarios();
然后始終附加父規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.