Yii2 侧边栏模态形式的控制器代码放在哪里?

Where to put controller code for Yii2 sidebar modal form?

我想在边栏中有一个模态 报告问题 表单,它会加载到每个页面上。我似乎无法理解将 controller/form 初始化代码放在哪里。

典型的控制器动作:

public function actionContact()
{
    $model = new Feedback();
    if ($model->load(Yii::$app->request->post()) && $model->sendEmail()) {
        Yii::$app->getSession()->addFlash('success', 'Thank you for contacting us.<br /><br />We will respond as soon as possible.');
        $model = new Feedback();
    }
    if (Yii::$app->request->isPjax) {
        return $this->renderAjax('contact', [
            'model' => $model,
        ]);
    } else {
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

$model是在第一次调用action的时候设置的,但是如果modal要放在sidebar里面,每个controllerand/orcontroller/action都可以调用,我不想每次都重复 $model 初始化 (DRY)。

我不确定这是否是定制 widgetcontroller->beforeAction 或其他东西的主要条件。

非常感谢任何见解。

使用小部件。该小部件将创建一个空的 $model 并将其传递给它的视图。您也可以在任何视图或布局中插入小部件。

关于

every controller and/or controller/action could be called

为什么要调用任何控制器?您的表格应该将信息发送给 1 controller/action 而不是其中任何一个。小部件将由任何 controller/action 显示,但小部件的表单将始终只调用 1.