的路径()
函数生成的路径使用其路线名称的页面。线路参数的值作为树枝传递地图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
- - - / src /仓库/ CommentRepository.php+ + + b / src /仓库/ CommentRepository.php@@ 3,8 + 3,10 @@名称空间的应用程序\库;使用App \实体\评论;+使用App \实体\会议;使用原则\ \ DoctrineBundle \ Repository \ ServiceEntityRepository捆绑销售;使用原则\ \ ManagerRegistry持久性;+使用原则\ ORM工具\ \分页\ Paginator;/ * * * @extends ServiceEntityRepository <评论> @@ -16年11 + 18日27 @@使用主义\ \ ManagerRegistry持久性;* /类CommentRepository延伸ServiceEntityRepository {+公共常量PAGINATOR_PER_PAGE = 2;+公共函数__construct (ManagerRegistry注册美元){父:__construct(美元注册、评论::类);}+公共职能getCommentPaginator(会议会议美元,int抵消美元):Paginator+ {+ $ = $ this - >查询createQueryBuilder (“c”)+ - >引入(c。会议=:会议')< /span>+ - > setParameter(“会议”,会议美元)+ - > orderBy (c。createdAt, DESC)+ - > setMaxResults (self:: PAGINATOR_PER_PAGE)+ - > setFirstResult(抵消美元)+ - > getQuery ()+;+美元+返回新Paginator(查询);+}+公共函数保存(评论实体美元,美元bool冲洗= false):空白{$ this - > getEntityManager() - >保存(实体);
我们已经设置的最大数量每页评论2来缓解测试。
管理模板的分页,通过教义Paginator树枝而不是教条的收集:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 6 6 + 6,7 @@使用App \实体\会议;使用App \ Repository \ CommentRepository;使用App \ Repository \ ConferenceRepository;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;+使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;用树枝\环境;@@ -21年11 + 22日16 @@类ConferenceController延伸AbstractController} #(路线(“/会议/ {id}”,名字:“会议”))公共函数显示(环境树枝美元,美元会议会上,CommentRepository CommentRepository美元):反应+公共函数显示(请求美元请求、环境树枝美元,美元会议,会议CommentRepository CommentRepository美元):反应{+ $抵消= max(0, $请求- >查询- > getInt(“抵消”,0));+ $ paginator = $ commentRepository - > getCommentPaginator(会议,抵消美元);+返回新的反应($树枝- >渲染(会议/ show.html。嫩枝”,(“会议”= >发布会上,美元——“评论”= >将其作为findBy $ commentRepository - >([“会议”= > $会议],[' createdAt ' = > ' DESC ']),+“评论”= > paginator美元,+ '以前' = >抵消美元- CommentRepository:: PAGINATOR_PER_PAGE,+ '未来' = > min(计数(paginator美元),抵消美元+ CommentRepository:: PAGINATOR_PER_PAGE),)));}}
控制器会抵消
从请求查询字符串($请求- >查询
)作为一个整数(getInt ()
如果不可用),默认为0。
的以前的
和下一个
补偿计算基于我们从paginator的所有信息。
最后,更新模板添加上一个网页和下一个网页的链接:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25
- - - /模板/会议/ show.html.twig+ + + b /模板/会议/ show.html.twig6 + 6,8 @@ @@ 6日< < h2 >{{会议}}会议/ h2 >{%}如果评论|长度> 0%+ < div >有{{评论|长度}}评论。< / div >+{%评论评论中%}{%如果发表评论。photofilename %} 13 @@ @@ -18、6 + 20< p >{{发表评论。文本}}< /p>{%endfor%}++{%如果先前> = 0%}+ < a href = "{{路径(“会议”,{id:会议。id,抵消:以前})之前}}" > < / >+ {% endif %}+{%长度如果下一个<评论| %}+ < a href = "{{路径(“会议”,{id:会议。id,抵消:明年})}}" > < / >+ {% endif %}{%其他%}< div >这个会议还没有发表评论。< / div > {% endif %}
您现在应该能够浏览评论通过“之前”和“下一个”链接: