在布局内渲染视图
Rendering views inside layouts
我正在尝试在 main.php 布局中使用表单。表单位于视图文件夹中,其中包含与我的时事通讯模型和控制器相关的视图。
到目前为止,我已尝试创建以下小部件:**
<?php
namespace app\components;
use app\models\Newsletter;
use yii\base\Widget;
use yii\helpers\Html;
class NewsletterForm extends Widget
{
public function run()
{
$model = new Newsletter;
return $this->render('_form', [
'model' => $model
]);
}
}
?>
小部件位于:app\components\NewsletterForm。php
我有一个名为 Newsletter.php 的数据库模型和一个名为 newsletter 的数据库 table。
app\views 中有一个名为时事通讯的文件夹。此文件夹作为 _form.php,我希望用户在其中输入姓名和电子邮件以接收时事通讯。
问题是我需要在 main.php
的页脚中加载 views\newsletter 中的 _form
当我使用小部件时,我总是收到错误消息:
The view file does not exist: /Applications/MAMP/htdocs/beladona/components/views/_form.php
如何在 views\newsletter\_form.php 中呈现表单。
表单需要在 main.php
的页脚内呈现
在与 OP 广泛讨论后,我们认为小部件不适合他的用例。小部件旨在成为独立的代码片段,能够在不同情况下重复使用。他只想从现有的 MVC 组合渲染一个视图文件
这就是我们的决定;
正在使用的布局是 main.php 我们对此进行了以下编辑;
use app\models\Newsletter;
echo $this->render('@app/views/site/_index', 'model' => new Newsletter);
这样做的好处是可以保留他正在使用的现有表格。
然后他需要指定要在表单中使用的 controller/action 组合,如下所示;
$form = ActiveForm::begin([
'action' => Url::to(['newsletter/create'])
]);
我正在尝试在 main.php 布局中使用表单。表单位于视图文件夹中,其中包含与我的时事通讯模型和控制器相关的视图。
到目前为止,我已尝试创建以下小部件:**
<?php
namespace app\components;
use app\models\Newsletter;
use yii\base\Widget;
use yii\helpers\Html;
class NewsletterForm extends Widget
{
public function run()
{
$model = new Newsletter;
return $this->render('_form', [
'model' => $model
]);
}
}
?>
小部件位于:app\components\NewsletterForm。php
我有一个名为 Newsletter.php 的数据库模型和一个名为 newsletter 的数据库 table。
app\views 中有一个名为时事通讯的文件夹。此文件夹作为 _form.php,我希望用户在其中输入姓名和电子邮件以接收时事通讯。
问题是我需要在 main.php
的页脚中加载 views\newsletter 中的 _form当我使用小部件时,我总是收到错误消息:
The view file does not exist: /Applications/MAMP/htdocs/beladona/components/views/_form.php
如何在 views\newsletter\_form.php 中呈现表单。 表单需要在 main.php
的页脚内呈现在与 OP 广泛讨论后,我们认为小部件不适合他的用例。小部件旨在成为独立的代码片段,能够在不同情况下重复使用。他只想从现有的 MVC 组合渲染一个视图文件
这就是我们的决定;
正在使用的布局是 main.php 我们对此进行了以下编辑;
use app\models\Newsletter;
echo $this->render('@app/views/site/_index', 'model' => new Newsletter);
这样做的好处是可以保留他正在使用的现有表格。
然后他需要指定要在表单中使用的 controller/action 组合,如下所示;
$form = ActiveForm::begin([
'action' => Url::to(['newsletter/create'])
]);