我有一个关于假期的观点,用户使用表格来选择旅行的地方和酒店。它有两种模式: HolidaysPlaces 和 HolidaysHotels 。
用户必须使用以下视图按此顺序填写表单:
答案 0 :(得分:1)
在HolidaysHotels模型中添加此案例的方案,并仅包含要检查的字段。
示例:如果您有3个字段名称,日期和年龄,则仅创建两个方案,并在控制器中设置方案。只会检查这两个字段。
模特:
public function scenarios(){
$scenarios = parent::scenarios();
$scenarios['create'] = ['name', 'date'];
return $scenarios;
}
在控制器中:
$holiday = new HolidayHotels();
$holiday->scenario = 'create';
了解有关方案的更多信息:http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios
答案 1 :(得分:0)
您可以在模型规则中添加一些基于条件的验证。以下是客户端和服务器验证的代码段。您可以在功能块内部使用许多条件。
['field-1', 'required', 'when' => function ($model) {
return $model->check_box == '1';
}, 'whenClient' => "function (attribute, value) {
return $('#checkbox-id').is(':checked') ';
}"],
答案 2 :(得分:0)
解决它的最简单方法是使用空字符串发送模型。然后控制器检查字符串是否为空。如果是,则不保存模型。否则,它就会被保存。
这是对我有用的唯一方式。