/**
* @inheritdoc
*/
public function rules() {
return [
[['quantity', 'first_name', 'last_name', 'email', 'country', 'postal_code', 'locality', 'address'], 'required'],
[['quantity'], 'integer'],
[['first_name', 'last_name', 'email', 'country', 'phone'], 'string', 'max' => 127],
[['postal_code'], 'string', 'max' => 20],
[['locality', 'address'], 'string', 'max' => 255]
];
}
public function scenarios() {
return [
'firstStep' => ['quantity', 'first_name', 'last_name', 'email'],
'secondStep' => ['country', 'postal_code', 'locality', 'address', 'phone'],
];
}
当我提交表格时,我得到:
无效参数 - yii \ base \ InvalidParamException
未知情况:默认
有谁知道为什么?也许这不是覆盖 场景方法的正确方法。
答案 0 :(得分:1)
public function rules() {
return [
[['quantity', 'first_name', 'last_name', 'email', 'country', 'postal_code', 'locality', 'address'], 'required'],
[['quantity'], 'integer'],
[['first_name', 'last_name', 'email', 'country', 'phone'], 'string', 'max' => 127],
[['postal_code'], 'string', 'max' => 20],
[['locality', 'address'], 'string', 'max' => 255],
[['quantity', 'first_name', 'last_name', 'email'], 'required', 'on' => 'firstStep'],
[['country', 'postal_code', 'locality', 'address', 'phone'], 'required', 'on' => 'secondStep'],
];
}
you change last two line....
And now use scenario in your controller...
$model->scenario = 'firstStep';
or,
$model->scenario = 'secondStep';
答案 1 :(得分:0)
您是否在模型中扩展了ActiveRecord
?
信息:http://www.yiiframework.com/doc-2.0/guide-structure-models.html
答案 2 :(得分:0)
确定。严格地说,我之所以遇到这个错误,是因为我没有正确覆盖场景方法,因为,就像我一样,我不会保留覆盖的方法特性。
鉴于此var color =
(document.getElementById("pt").style.background.length > 0) ?
document.getElementById("pt").style.background.length :
getComputedStyle(document.getElementById("pt")).getPropertyValue("background");
,我会在RETURN上完全替换。
为了避免这种情况,我必须正确地执行此操作,因为它在文档中声明:
即:
default error
当我们这样做时,错误就消失了。
然而,@ Vishu Patel确实解决了我遇到的隐含问题。所以我会接受它的答案。答案 3 :(得分:0)
因为您要覆盖方案,所以您丢失了默认方案。 您必须按照以下步骤进行操作
public function scenarios() {
$scenarios = parent::scenarios(); // This will cover you
$scenarios['firstStep'] = ['quantity', 'first_name', 'last_name', 'email'];
$scenarios['secondStep'] = ['country', 'postal_code', 'locality', 'address', 'phone'];
return $scenarios;
}