【问题标题】:Yii - Ways to do include another view in this viewYii - 在这个视图中包含另一个视图的方法
【发布时间】:2010-10-12 06:19:36
【问题描述】:

我的布局页面:

<html>
 <body>
  <div id="container">
   <ul id="list"></ul>
  </div>
  <input id="update" value="update" />
 </body>
</html>

其中 ul 列表是部分的,当

  1. 整个页面被加载
  2. 当点击更新按钮时,会发出一个ajax请求,容器层的innerHTML会用response ul list更新

我是 Yii 的新手,不确定如何在这两种情况下重用 ul 部分,我用谷歌搜索了一下,小部件似乎是解决方案,但不确定。有任何想法吗?

谢谢。

【问题讨论】:

  • 我的回答有帮助吗?或者您是否需要澄清您的问题以获得更好的答案?如果您的问题得到解决,请选择一个答案,或提供您自己的答案。谢谢!
  • 您收到的答案是正确的,但要小心使用 ajax,因为它不包含在 Google 搜索中。另一方面,如果你 renderPartial 你将不得不再次传递数据:controller->mainview->includedView

标签: php html yii


【解决方案1】:

如果我理解你的问题,你可以做一些事情......

(我假设你有一个像views/model/_list.php这样的部分视图文件。)

您可以在初始页面加载时 renderPartial('/model/_list'),然后在 AJAX 操作中再次调用 renderPartial('/model/_list')。

或者你可以只使用 AJAX 操作(包含 renderPartial('/model/_list')),并在页面加载时使用 jQuery 调用它,而不是在视图中渲染它(只需调用 Yii::app()-> getClientScript()->registerScript 在您要加载的视图中,并使用 $.ajax() 或其他方式进行调用。

我做的第三件事是在控制器中创建一个函数(不是action,只是一个常规的公共方法),它返回renderPartial的输出(return $this->renderPartial(' /model/_list',array(), true) 我想)。然后考虑到初始负载,我回显该函数,并在 ajax 操作中回显它,然后再调用 Yii::app()->end();.

当您将在整个站点上渲染一些部分代码时,即使在来自不同控制器的页面上,小部件也很有用。因此,如果该列表位于整个站点的侧边栏中,最好用它制作一个小部件,否则我只会使用您正在使用的模型的控制器。您对小部件的操作与对常规视图的操作相同 - 在小部件中构建数据并呈现部分视图,或者通过 AJAX 调用它。您可能会为 AJAX 做的事情是 POST 到您从中获取数据的控制器,因此您仍然需要 AJAX 操作。该小部件只会让您更轻松地将其放置在网站周围的不同位置。

祝你好运!

【讨论】:

  • 如果我理解原始问题,这里的第一个选项可能是最干净和最合适的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多