yii小部件呈现另一个控制器的局部视图

时间:2014-07-09 06:38:45

标签: php yii

我需要为yii支持的项目中的不同模块创建通用对话框小部件,其形式将自动序列化并传递给控制器​​操作以进行添加/更新操作。

如果我在我的窗口小部件的重载run()或init()方法中调用render partial方法并使用html格式传递自定义视图路径(这个窗体将在dialog-btn后的模态对话框窗口中显示),这是一个好习惯吗?点击相应的行动)?

我的小部件路径:

  

/protected/components/widgets/DialogFormWidget.php

我的表单路径:

  

/protected/modules/module/controller/views/forms/submittable_html_form.php

2 个答案:

答案 0 :(得分:4)

跟着

 $this->renderPartial('application.modules.controllers.views.forms.submittable_html_form');

更新:

在上面的代码中,$this指向控制器,如果要在窗口小部件中使用控制器renderPartial,则必须像$this->controller->renderPartial (

一样访问它

答案 1 :(得分:1)

即使你可以使用视图文件的路径从其他控制器访问它($ this-> renderPartial(' application.views.controller.view',[]),或者到任何地方的路径您的视图存在于系统中),这不是一个好的解决方案。更好的解决方案是创建Yii小部件,因此您可以轻松地从所有位置调用它,因为它的控制器独立。您将获得许多好处,因为使用Yii小部件,您可以选择发送一些小部件配置参数,这些参数可用于自定义小部件,甚至可以根据该参数加载不同的视图/样式。此外,您还可以使用自定义函数,这些函数可以帮助您为视图添加一些业务逻辑。 你可以在这里找到一些起点(http://www.yiiframework.com/doc/guide/1.1/en/basics.view