我有同样的问题,我找到了这个解决方案。
例如,如果您的类别属性在模型 A 中,并且如果它是“是”,那么模型 B 中的项目属性应该是必需的。
对于这个例子:
模型 A.php:
class A extends \yii\db\ActiveRecord
{
public $category;
public function rules()
{
return [
[['category'], 'safe'],
];
}
}
B.php 类 B 扩展 \yii\db\ActiveRecord
{
public $item;
public $category;
public function rules()
{
return [
[['item'], 'safe'],
[['item'], 'required', 'when' => function($model) {
return $model->category == 'yes';
}]
];
}
}
并在控制器中
$a = new A();
$b = new B();
if ($a->load(Yii::$app->request->post()) && $b->load(Yii::$app->request->post())) {
$b->category= Yii::$app->request->post()['First']['category'];
$isValid = $a->validate();
$isValid = $b->validate() && $isValid;
if ($isValid) {
echo 'its valid';
}
}