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)。
我不确定这是否是定制 widget
或 controller->beforeAction
或其他东西的主要条件。
非常感谢任何见解。
使用小部件。该小部件将创建一个空的 $model 并将其传递给它的视图。您也可以在任何视图或布局中插入小部件。
关于
every controller and/or controller/action could be called
为什么要调用任何控制器?您的表格应该将信息发送给 1 controller/action 而不是其中任何一个。小部件将由任何 controller/action 显示,但小部件的表单将始终只调用 1.
我想在边栏中有一个模态 报告问题 表单,它会加载到每个页面上。我似乎无法理解将 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)。
我不确定这是否是定制 widget
或 controller->beforeAction
或其他东西的主要条件。
非常感谢任何见解。
使用小部件。该小部件将创建一个空的 $model 并将其传递给它的视图。您也可以在任何视图或布局中插入小部件。
关于
every controller and/or controller/action could be called
为什么要调用任何控制器?您的表格应该将信息发送给 1 controller/action 而不是其中任何一个。小部件将由任何 controller/action 显示,但小部件的表单将始终只调用 1.