Hyperlink 使用get参数创建链接

Hyperlink 使用get参数创建链接,hyperlink,query-string,phalcon,volt,Hyperlink,Query String,Phalcon,Volt,phalcon(volt)中是否有一个帮助函数来创建到带有GET参数的路由的链接?我有分页链接,我想在上面添加?cat=category和?year=year,这取决于它们是否被设置 <a href="{{ url.getBaseUri() }}tags/{{ tagname.tag }}">First</a> <a href="{{ url.getBaseUri() }}tags/{{ tagname.tag }}?page=<?= $page->be

phalcon(volt)中是否有一个帮助函数来创建到带有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?cat=a&year=b&page=2
或者,如果cat未设置或为空:

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>


其余部分在控制器中进行。在控制器中进行此操作比使用volt更容易。 首先,使用以下内容为分页链接生成基本URL:

现在,您可以使用类似于
$this->request->getPost('cat')的东西获得'cat'和'year'
检查是否已设置,并将其作为GET参数附加到
$pagingUrl
。在
$pagingUrl
的末尾保留一个“&page=”,以便以后轻松地追加页码

$page
$pagingUrl
设置为视图的变量,以便从volt轻松访问:

$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设计者的目标是更多地使用而不是显式的GET参数。如果以这种方式传递参数,则
TagController
可能会有一个支持分页的操作,如下所示:

class TagController
{
  ...
  public function ListAction($page = 1, $category = 'default-cat', $year = 1997)
  {
    ...
通过这种方式,您可以轻松创建如下链接:

  • 标签/列表
  • tags/list/2/stuff
  • tags/list/9/stuff/2014

好的。我会试试看,但我觉得这可能会有问题吗?或者&在page.x的前面,这就是为什么我想到了类似于viewok的东西,看起来很干净。我在那里使用显式GET参数,因为用户可以选择过滤顺序。e、 g./cat/year或/year/cat。这意味着我必须找出哪个是DB请求的第一个。我有它像在黑客的解决方案。将对我的问题进行编辑
{{ link_to(pagingUrl ~ '1', 'First') }}
{{ link_to(pagingUrl ~ page.before, 'Previous') }}
{{ link_to(pagingUrl ~ page.next, 'Next') }}
{{ link_to(pagingUrl ~ page.last, 'Last') }}
class TagController
{
  ...
  public function ListAction($page = 1, $category = 'default-cat', $year = 1997)
  {
    ...