我的版面页面:
<html>
<body>
<div id="container">
<ul id="list"></ul>
</div>
<input id="update" value="update" />
</body>
</html>
其中ul列表是部分列表,将在以下情况下呈现
>整个页面被加载
>单击更新按钮时,将发出ajax请求,并且将使用响应ul列表更新容器层的innerHTML
我是Yii的新手,不确定在两种情况下都如何重用ul部分,我用Google搜索了一下,小部件似乎是解决方案,不确定.有任何想法吗?
谢谢.
解决方法:
如果我正确理解您的问题,您可以做一些事情…
(我假设您有一个局部视图文件,例如views / model / _list.PHP.)
您可以在初始页面加载时渲染renderPartial(‘/ model / _list’),然后在AJAX操作中再次调用renderPartial(‘/ model / _list’).
或者,您可以仅执行AJAX操作(包含renderPartial(‘/ model / _list’)),然后使用jQuery在页面加载时调用它,而不是在视图中呈现它(只需调用Yii :: app()-> getClientScript( )-> registerScript在您要加载的视图中,并使用$.ajax()或其他名称进行调用).
我要做的第三件事是在控制器中创建一个函数(不是一个动作,只是一个常规的公共方法),该函数返回renderPartial的输出(返回$this-> renderPartial(‘/ model / _list’,array() ,是的)我认为).然后,鉴于初始负载,我回显了该函数,并且在ajax操作中,在调用Yii :: app()-> end();之前回显了该函数.
当您要在整个站点上渲染一些部分代码时,即使在来自不同控制器的页面上,小部件也很有用.因此,如果该列表位于整个站点的侧边栏中,则最好用它制作一个小部件,否则我将只使用您正在使用的模型的控制器.使用窗口小部件将执行的操作与使用常规视图相同—在窗口小部件中构建数据并呈现partialView,或通过AJAX调用它.您可能会对AJAX进行的操作是POST到要从中获取数据的控制器,因此您仍然需要AJAX操作.窗口小部件将使其更容易放置在网站的不同位置.
祝好运!