在联结表中验证期间未找到yii2相关模型

时间:2017-12-07 08:45:05

标签: validation yii2 junction-table

我有一个包含2个ID(Znw& a_id)的联结表wz_id,以及一个包含2个选择框的表单。如果相应型号fieldn的{​​{1}}与相应型号a的{​​{1}}具有相同的价值,我想查看规则。

规则:

field

自定义验证功能(现在只检查是否找到了正确的值):

wz

relation [['a_id', 'wz_id'], 'compareFields', 'on' => 'createwz', 'params' => []],

public function compareFields($attribute, $params) {
    $this->addError($attribute, $this->a->fieldn);
    return false;
}

这种关系在视图等方面运作良好。

relation a

public function getA() {
    return $this->hasOne(\app\models\A::className(), ['id' => 'a_id']);
}

控制器:

wz

如果我将public function getWz() { return $this->hasOne(\app\models\Wz::className(), ['id' => 'wz_id']); ;} 添加到自定义验证功能,它会显示正确的值。如果我正在添加public function actionCreatewz() { $model = new Znw; $a = A::find()->where(['id' => $_GET['Znw']['a_id']])->one(); $model->scenario = 'createwz'; try { if ($model->load($_POST) && $model->save()) { return $this->redirect(Url::previous()); } elseif (!\Yii::$app->request->isPost) { $model->load($_GET); } } catch (\Exception $e) { $msg = (isset($e->errorInfo[2])) ? $e->errorInfo[2] : $e->getMessage(); $model->addError('_exception', $msg); } return $this->render('createwz', [ 'model' => $model, 'a' => $a, ]); } ,那么我收到以下错误:

  

尝试获取非对象的属性

但是,在$ _POST请求中,两个ID($this->wz->field& $this->a->fieldn)都有正确的值,因此我应该能够看到相应的a_id模型属性。为什么我会收到此错误?你能指点我正确的方向吗?提前谢谢!

0 个答案:

没有答案