有一个反馈表单小部件,我连接在不同的页面上,为了将数据发送到邮件,我必须在控制器中的每个有表单的操作中插入以下代码
$contact = new ContactForm();
$contact->contact();
if ($contact->load(Yii::$app->request->post()) && $contact->contact(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('contactFormSubmitted');
return $this->refresh();
}//////////
无论一切如何运作,都会发送信件,但事实证明您必须不断复制代码。如果我将此代码作为小部件插入,也会发送这封信,但随后该行给出错误return $this->refresh();
告诉我该怎么做。刚学 Yii2=)
选项1:
创建一个父控制器,例如
BaseController{}
在它的方法中init()
编写你的代码此外,所有有反馈形式的控制器都继承自BaseController{}
选项 2:
在每个有反馈表的控制器中,在方法中编写代码
init()
选项 3:
创建一个父控制器,例如使用您的代码
BaseController{}
在其中创建一个方法checkFeedBack()
进一步,继承所有控制器BaseController{}
,action
在需要检查和提交表单的地方,调用方法$this->checkFeedBack();