Yii - 这种观点包括另一种观点

Sha*_*awn 3 html php yii

我的布局页面:

<html>
 <body>
  <div id="container">
   <ul id="list"></ul>
  </div>
  <input id="update" value="update" />
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

其中ul列表是部分,将在何时呈现

  1. 整个页面都被加载了
  2. 单击更新按钮时,会发出ajax reqeust,并使用响应ul列表更新容器层的innerHTML

我是Yii的新手,并且我不确定如何在两种情况下重复使用ul partial,我google了一下,小部件似乎是解决方案,不确定.有任何想法吗?

谢谢.

tha*_*smt 5

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

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

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

或者您可以只使用AJAX操作(包含renderPartial('/ model/_list')),并使用jQuery在页面加载时调用它而不是在视图中呈现它(只需调用Yii :: app() - > getClientScript() - >在您的视图中注册要加载它的寄存器,并使用$ .ajax()或其他东西进行调用.

我做的第三件事是在控制器中创建一个函数(不是一个动作,只是一个常规的公共方法),它返回renderPartial的输出(返回$ this-> renderPartial('/ model/_list',array(),是的)我认为).然后在初始加载的视图中我回显该函数,并在ajax动作中我在调用Yii :: app() - > end();之前回显它.

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

祝好运!