我正在尝试在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的数据库表。
app \ views中有一个名为newsletter的文件夹。此文件夹为_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的页脚内部呈现
答案 0 :(得分:4)
经过与OP的广泛讨论后,我们认为小部件并不适合他的用例。小部件旨在成为独立的代码片段,能够在不同情况下重用。他想做的就是从现有的MVC组合中渲染一个视图文件
所以这就是我们所确定的;
正在使用的布局是main.php我们为以下内容编辑了这个;
use app\models\Newsletter;
echo $this->render('@app/views/site/_index', 'model' => new Newsletter);
这样做的好处是可以保留他正在使用的现有形式。
然后他需要在表单中指定要使用的控制器/动作组合,如下所示;$form = ActiveForm::begin([
'action' => Url::to(['newsletter/create'])
]);