在使用file-loader
的分页小部件时遇到了一个问题。我正在做的是,选择类别,然后通过在模板中加载数据并返回opacity:0.0000000001
来命中一个ajax请求以获取相应的列表,如下所示:
ajax
在我的html
控制器中,我只是在做
<f:if condition="{articles}">
<f:then>
<f:widget.paginate objects="{articles}" as="paginatedArticles" configuration="{itemsPerPage: numberOfRecords}">
<f:for each="{paginatedArticles}" as="article">
<h2>
<f:link.action action="show" arguments="{article : article}"> {article.title}</f:link.action>
</h2>
<p>
<f:format.html>{article.description}</f:format.html>
</p>
<hr/>
</f:for>
</f:widget.paginate>
</f:then>
<f:else>
No Records Found
</f:else>
,以便使用我的结果加载模板。
但是现在渲染ajax之后,如果我使用分页,视图就会中断。没有样式,标题或其他任何内容。
当我单击分页小部件的下一个时,它是这样显示的:http://prntscr.com/kr8vg0
为了完整起见,这里是我写的称为ajaxMethod
的ajax。
$this->view->assign('articles', $result);
任何帮助将不胜感激。
答案 0 :(得分:0)
用于驱动(应驱动)小部件的XHR请求的typeNum
是从Fluid扩展中添加的,不需要您添加特殊的PAGE
对象。
即使您以某种方式进行了覆盖调用您的特定控制器操作,也可能无法正确处理。通常,您永远不会引用内容元素实例,而是直接使用Extbase请求进行引导。除其他外,因为渲染内容对象会增加包装器。
因此,您应该删除它,并确保将QueryResult传递给分页小部件。然后根据需要覆盖小部件模板。其余的应该无需配置TS即可工作。
编辑:
在通过XHR呈现的模板中使用的分页小部件本身意味着它会传递用于加载XHR的参数-包括自定义typeNum
值。然后,该小部件会创建您单击正常的标准链接-它们将是指向XHR响应的“内部内容”的链接,因为URL包含类型编号。
问题就在这里:添加此typeNum后,您将无法删除它。因此,您将不得不导致单击下一个/上一个等链接,从而导致一个新的XHR请求加载内容(您的操作方式很大程度上取决于您的JS应用程序,因此无法在那里指导您)。 / p>
我对确保QueryResult不相关的评论,除非您的页面没有变化,例如,您始终看到项目1-10。
但是为了解决这个问题,我实际上建议您不要使用分页小部件。主要原因是您已经在XHR上下文中,该上下文使您可以接收控制器动作的参数,并可以在控制器动作中操纵查询的offset
和limit
部分。这意味着您不仅可以生成到小部件的链接,还可以生成到控制器动作的链接,例如,将CSS类放在应该触发XHR请求的链接和应该重新加载整个页面的链接上(例如,显示详细视图) 。您可以避免覆盖分页模板,并控制所有链接的所有参数。
实际上,无论是否使用XHR,我都希望使用分页小部件为上述offset
提供一个控制器参数。有很多技术上的原因,为什么我不在这里列出,但足以说明这一点,因为必须创建单个参数而交易很多“黑匣子”是一件非常合理且可预测的事情。 >