前端人员在谈论后端 - 请记住。
我们有一个名为Ideas
的模块,它有一些时间轴,每个项目都有不同的创意条目。
初始渲染,在IdeasProjectController.php
处通过actionView
方法将视图渲染到屏幕,但我想重新使用此操作,以便我可以从此处请求某种分页内容改为采取行动方式。
现在的样子:
$data = array(
'user' => $user,
'project' => $project,
'ideas' => $ideas,
'myIdeas' => false,
'offset' => isset($offset) ? $offset : 0,
'isAjaxRequest' => $isAjaxRequest,
'isVotingActive' => $project->isVotingActive(),
'userHasIdeas' => count($userIdeas) > 0,
'teamInviteParams' => $teamInviteParams,
);
// renderPartial only if an ajax request
if ($isAjaxRequest) {
$this->renderPartial('view', $data, null, true);
} else {
$this->render('view', $data);
}
在关联的view.php
文件中,我们使用isAjaxRequest
参数最终触发渲染不同的twig文件,使用类似的数据集,知道完整{{1}请求的文件包含我用于render
的树枝文件。这样:
renderPartial
到目前为止一切顺利。但我需要在布局树枝文件中使用if( $isAjaxRequest ) {
Yii::app()->twig->render('blocks/l-ideas/b-ideas-list/b-ideas-list.twig', array(..)
} else {
Yii::app()->twig->render('blocks/l-ideas/l-ideas-project/l-ideas-project.twig', array(..)
,如下所示:b-ideas-list
结果完全不同,所以这就是{% use '/blocks/l-ideas/b-ideas-list/b-ideas-list.twig' %}
内部的样子:
b-ideas-list.twig
这样,在AJAX请求中,我只获得最小的想法列表和{% block bIdeasList %}
{% if not isAjaxRequest %}
<div class="b-ideas-list__wrap b-ideas-list__wrap_no-margin">
.. lots of boilerplate ..
</div>
<div class="b-ideas-list b-ideas-list_covers clearfix">
<div class="b-ideas-list__wrap">
<div class="clearfix b-ideas-list__wraper-fixed-box">
<div class="b-ideas-list__left"> </div>
<div class="b-ideas-list__center">
{{ block('bIdeasList_') }}
{{ block('bIdeasMore_') }}
</div>
{{ block('bIdeasListPartners_') }}
</div>
{{ block('bIdeasListActiveIdeas_') }}
</div>
</div>
{% else %}
{{ block('bIdeasList_') }}
{{ block('bIdeasMore_') }}
{% endif %}
{% endblock %}
按钮,以便在下一个AJAX请求中加载更多内容。有一些偏移等
现在。如果我对结果URL进行http访问,例如More
在数据库中只有7个条目,我会得到两个新的想法和完整的布局。但是通过对同一个URL的AJAX调用进行相同的访问,我得到了两个构思卡,剥离了布局,然后围绕/ideas/ideasProject/view/1?offset=5
块的样板代码,好像我没有访问{只需一次通话即可{1}}为真。
如果你还在读这个。你认为你能帮忙吗?