Yii小部件呈现另一个控制器的部分视图


yii widget render partial view of another controller

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

这是一个很好的做法,如果我调用渲染部分方法在重载运行()或我的小部件的init()方法和传递他自定义视图路径与html表单(此表单将显示在模态对话框窗口后,dialog-btn点击相应的动作)?

我的部件路径:

/保护/组件/部件/DialogFormWidget.php

我的表单路径:

/保护/模块/模块/控制器/视图/形式/submittable_html_form.php

go with

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

UPDATE:

在上面的代码中,$this指的是控制器,如果你想在一个小部件内部使用控制器的renderPartial,你必须像$this->controller->renderPartial (

那样访问它

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