【问题标题】:how to change part of url from cakephp's paginator options?如何从 cakephp 分页选项中更改部分 url?
【发布时间】:2011-06-30 06:50:39
【问题描述】:

在我的 cakephp 视图中有自定义分页。在此之前,我做了一些自定义路由更改。

问题是链接会指向类似的页面

http://localhost/myapp/foos/view/news/page:2

而不是

http://localhost/myapp/news/page:2

因此,带有 foos/view/ 的部分不必是链接的一部分。

尝试使用多个自定义选项更改 url,例如

$this->Paginator->options(array('url' => $this->passedArgs));

但没有运气,因为我的 url 中总是有 foos/view/。

你能帮我怎样才能摆脱那个 foos/view 吗?

非常感谢您!

更新:我设法做“某事”,但还不够,通过添加以下几行:

$options = array('url'=> array('controller' => 'news' ) );
$paginator->options($options);

现在,我的链接看起来像:

http://localhost/myapp/news/index/page:2

如何摆脱 url 中的“index”?

【问题讨论】:

    标签: cakephp pagination cakephp-1.3 options


    【解决方案1】:

    下面这行更多是关于将各种 URL 信息传递给视图:

    $this->Paginator->options(array('url' => $this->passedArgs));
    

    我认为您要查看的是 Controller 中的辅助声明:

    var $helpers = (
        'SomeHelper',
        'AnotherHelper',
        'Paginator' => array(
            'url' => array('controller'=>'news')
        )
    );
    

    如果您想更好地控制自定义路线,例如您拥有的路线,请尝试

    'url' => '/news'
    

    我有一段时间没有使用 PaginatorHelper - 所以我可能会走错路 - 但我相信这是一个好的开始。

    此外,请查看the Paginator Helper page 以了解其中提到 $options 的位置,然后查看Router::url() 前一页的建议。

    【讨论】:

    • tnx,但它没有帮助...请您检查我帖子的更新部分吗?
    • 我已经更新了我的答案,提到了另一种构建路由器样式 url 的方法
    【解决方案2】:

    我有一个案例,我正在使用 CakePHP 2.1(此线程标记为 1.3)和动态管理路由来显示如下页面的项目:

    Router::connect('/admin/main/*', array('controller' => 'adminPages', 'action' => 'display')); 
    

    使用查询字符串参数,生成如下动态 url:http://mydomain.com/adminPages/main/...?page=1

    链接路径不符合我们的需要,发现我可以直接使用以下方法更改 url:

    $this->Paginator->options(array(
      'url' => array(
        'controller' => 'admin/main/my-display',
      )
    ));
    

    对我来说,它建立了一个链接:http://mydomain.com/admin/main/my-display?page=1 - 这是我们正在寻找的正确网址。如果我使用了一个字符串,如上所述,它会将自身附加到 url,例如:http://mydomain.com/adminPages/main/.../admin/main/my-display?page=1

    【讨论】:

      【解决方案3】:

      在视图中:

      <?php 
          $this->Paginator->options(array('url' => array('controller' => '','action' =>'your-custom-url')));
      ?>
      

      在 routes.php 中:

      <?php 
          Router::connect('/your-custom-url/*', array('controller' => 'Controller', 'action' => 'function'));
      ?>
      

      【讨论】:

      • 4 年后,我使用了这个解决方案并且它有效。谢谢。
      猜你喜欢
      • 2013-05-04
      • 2015-04-04
      • 1970-01-01
      • 2011-07-10
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 2011-07-29
      相关资源
      最近更新 更多