如何在Yii中呈现另一个类视图的形式?

时间:2014-07-14 10:15:54

标签: php templates yii

在Yii中,我有一个属于A类的视图,在与该类对应的视图中,我想添加一个表单来创建另一个类的模型。

所以,在protected/views/pictures/myview.php,我有:

<?php
/* @var $this PicturesController */
/* @var $model Pictures */

$objectForm = new Objects();
$newForm = ObjectsController::renderPartial('create',array('model'=>$objectForm),true);

?>

我正在尝试添加表单以呈现protected/views/objects/create.php。但是上面的代码不起作用,因为视图仍在尝试从Pictures类加载创建表单。由于我收到错误,说明没有定义对象的相同属性,因为系统正在加载图片创建表单。

如何添加Objects模型的创建形式?

注意:我添加了#34; applications.controllers。*&#34;到main.php中的import数组,但我知道这是一个不好的做法。是否有任何可能的解决方案并不涉及我这样做?

感谢。

2 个答案:

答案 0 :(得分:1)

在这种情况下,您只需要在renderPartial中链接正确的视图:

$objectForm = new Objects();
$newForm = ObjectsController::renderPartial('/objects/create',array('model'=>$objectForm),true); // "/objects/create", and not "create".

这些错误正在给出,因为Yii知道你正在渲染图片的创建视图,并且你给它了对象模型(而不是图片模型)。

如果我们在控制器中讨论渲染调用,并且您想要从另一个属于另一个控制器的操作渲染视图,则不会直接渲染到此视图。您必须“重定向”到另一个控制器(属于另一个类)的操作。

答案 1 :(得分:0)

试试这个

$this->renderPartial('application.staff.views.default.create',array());

这是格式

$this->renderPartial('context_text.views.display._display_text');