带分页的CakePHP路由

带分页的CakePHP路由,cakephp,routing,pagination,Cakephp,Routing,Pagination,这似乎已经出现在其他用户身上,但我还没有看到一个与我试图实现的目标相关的答案 因此,基本上我在/admin/portfolio/ 当我进入下一页时,我会看到:/admin/portfolio/index/page:2和/admin/portfolio/index/page:1 1.)如何从url中删除索引?所以它只是/admin/portfolio/page:2 2.)如何使page:1只是/admin/portfolio/,如果有人试图转到第1页,它只会更改url/将他们重定向到没有参数的索引

这似乎已经出现在其他用户身上,但我还没有看到一个与我试图实现的目标相关的答案

因此,基本上我在
/admin/portfolio/

当我进入下一页时,我会看到:
/admin/portfolio/index/page:2
/admin/portfolio/index/page:1

1.)如何从url中删除索引?所以它只是
/admin/portfolio/page:2

2.)如何使
page:1
只是
/admin/portfolio/
,如果有人试图转到第1页,它只会更改url/将他们重定向到没有参数的索引。否则,这意味着我有重复的第一页

正如我前面所说的,我在网上看到了一些例子,但它们看起来都很混乱,并且与我使用的代码不同(见下文),因此我不确定如何实现我正在做的事情

    <?php echo $this->Paginator->numbers(); ?>

    <?php echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); ?>
    <?php echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); ?> 

    <?php echo $this->Paginator->counter(); ?>

但这也不起作用,因为路由没有看到页面

我建议明确声明您的投资组合路线。这样,您就不会干扰应用程序中的任何其他控制器/操作

考虑到这一点,您的应用程序的公文包部分的路由定义如下所示:

/**
 * add, edit and delete actions
 */
Router::connect('/admin/portfolio/add', array(
  'controller' => 'portfolio', 'action' => 'add', 'admin' => true
));
Router::connect('/admin/portfolio/delete/:id', array(
  'controller' => 'portfolio', 'action' => 'delete', 'admin' => true), array(
    'pass' => array('id')
  )
);
Router::connect('/admin/portfolio/edit/:id', array(
  'controller' => 'portfolio', 'action' => 'edit', 'admin' => true), array(
    'pass' => array('id')
  )
);

/**
 * index action
 */
Router::connect('/admin/portfolio', array(
  'controller' => 'portfolio', 'action' => 'index', 'admin' => true, 'page' => 1
));
Router::connect('/admin/portfolio/*', array(
  'controller' => 'portfolio', 'action' => 'index', 'admin' => true), array(
    'named' =>
      array('page' => '[\d]+'),
  )
);

任何更新,因为我真的被这个问题难住了:/Thanks唯一的问题是,这意味着虚假的url可以工作,例如
/admin/portfolio/fake url
,并且不显示404页面:1仍然可以工作,并且不会重定向以修复urlduplication@Cameron您可以通过检查指定参数“页面”来克服控制器中的“虚假url”或默认值“page”始终存在-如果不存在,则发出404或异常。关于您的第二条评论,分页不会输出此url。您可以手动访问它是的,但只有您知道。在您的管理索引()操作中:if(empty($this->request->params['named']['page'])和&empty($this->request->params['page']){throw new NotFoundException(uu('Invalid page'));}在1.3中我该怎么做?像这样的请求在2.0中是新的,对吗?
Router::connect('/admin/portfolio/:page',
                    array('admin'=>true,'controller'=>'portfolio','action'=>'index',
                    array(
                     'pass' => array('page'),
                     'page'=> '[0-9]+'
                      )));
/**
 * add, edit and delete actions
 */
Router::connect('/admin/portfolio/add', array(
  'controller' => 'portfolio', 'action' => 'add', 'admin' => true
));
Router::connect('/admin/portfolio/delete/:id', array(
  'controller' => 'portfolio', 'action' => 'delete', 'admin' => true), array(
    'pass' => array('id')
  )
);
Router::connect('/admin/portfolio/edit/:id', array(
  'controller' => 'portfolio', 'action' => 'edit', 'admin' => true), array(
    'pass' => array('id')
  )
);

/**
 * index action
 */
Router::connect('/admin/portfolio', array(
  'controller' => 'portfolio', 'action' => 'index', 'admin' => true, 'page' => 1
));
Router::connect('/admin/portfolio/*', array(
  'controller' => 'portfolio', 'action' => 'index', 'admin' => true), array(
    'named' =>
      array('page' => '[\d]+'),
  )
);