是否有phalcon(伏特)中的辅助函数来创建具有GET参数的路径的链接?我有想要添加的分页链接?cat = category和?year = year,具体取决于它们是否已设置。
<a href="{{ url.getBaseUri() }}tags/{{ tagname.tag }}">First</a>
<a href="{{ url.getBaseUri() }}tags/{{ tagname.tag }}?page=<?= $page->before; ?>">Previous</a>
<a href="{{ url.getBaseUri() }}tags/{{ tagname.tag }}?page=<?= $page->next; ?>">Next</a>
<a href="{{ url.getBaseUri() }}tags/{{ tagname.tag }}?page=<?= $page->last; ?>">Last</a>
这样
http://site.tld/tags/xyz?page=2
会变成:
http://site.tld/tags/xyz?cat=a&year=b&page=2
或者,如果cat未设置或为null:
http://site.tld/tags/xyz?year=b&page=2
修改
这种方式似乎有效:
<a href="{{ pagingurl ~ page.first }}">First</a>
<a href="{{ pagingurl ~ page.before }}">Previous</a>
<a href="{{ pagingurl ~ page.next }}">Next</a>
<a href="{{ pagingurl ~ page.last }}">Last</a>
其余部分发生在控制器
中答案 0 :(得分:1)
IMO在控制器中比使用伏特更容易做到这一点。 首先,使用URL Service:
为您的分页链接生成基本网址$pagingUrl = $this->url->get('tags/' . $tagname->tag);
现在你可以得到“猫”了。和&#39;年&#39;使用$this->request->getPost('cat');
之类的内容来检查它是否已设置并将其作为GET参数附加到$pagingUrl
。留下&#39;&amp; page =&#39;在$pagingUrl
的末尾,以便以后轻松附加页码。
将$page
和$pagingUrl
设置为视图的变量,以便您可以从伏特轻松访问它:
$this->view->setVar('page', $page);
$this->view->setVar('pagingUrl', $pagingUrl);
最后在视图中你可以使用类似的东西:
{{ link_to(pagingUrl ~ '1', 'First') }}
{{ link_to(pagingUrl ~ page.before, 'Previous') }}
{{ link_to(pagingUrl ~ page.next, 'Next') }}
{{ link_to(pagingUrl ~ page.last, 'Last') }}
上述解决方案似乎很苛刻,因为Phalcon设计人员的目标是使用clean URLs而不是显式GET参数。如果您以这种方式传递参数,那么TagController
可能会有一个支持分页的操作:
class TagController
{
...
public function ListAction($page = 1, $category = 'default-cat', $year = 1997)
{
...
以这种方式工作,您可以轻松创建如下链接:
tags/list
tags/list/2/stuff
tags/list/9/stuff/2014