带分页的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]+'),
)
);