其他用户似乎已经出现这种情况,但我没有看到与我想要达到的目标相关的答案。
所以基本上我在/admin/portfolio/
当我转到下一页时,我得到了这个:/admin/portfolio/index/page:2
和/admin/portfolio/index/page:1
1.。)如何从网址中删除索引?所以它只是/admin/portfolio/page:2
2.。)如何使page:1
只是/admin/portfolio/
并且如果有人试图转到第1页然后它只是改变网址/将它们重定向到只有索引而没有参数。否则就意味着我的第一页有重复。
正如我之前所说,我已经在线查看了一些示例,但它们看起来都很混乱,并且与我使用的代码不一样(见下文)所以我不确定如何实现我正在做的事情。< / p>
<?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(); ?>
我试过这个:
<?php $this->Paginator->options(array('url'=>array(
'admin'=>true,
'controller' => 'portfolio',
'action' => 'index'))); ?>
但我仍然在网址
中获取索引但是添加这个:Router::connect('/admin/portfolio/*',array('admin'=>true,'controller'=>'portfolio','action'=>'index'));
确实从url中删除了索引但这会导致第二个问题,即任何内容都可以添加到url中,因此不再严格,并且在查看虚假页面时显示404 / p>
所以我也试过了:
Router::connect('/admin/portfolio/:page',
array('admin'=>true,'controller'=>'portfolio','action'=>'index',
array(
'pass' => array('page'),
'page'=> '[0-9]+'
)));
但这不起作用,因为路由没有看到页面!
答案 0 :(得分:1)
我建议明确声明您的投放组合路线。这样,您就不会干扰应用程序中的任何其他控制器/操作。
考虑到这一点,您的应用程序的投资组合部分的路由定义将如下所示:
/**
* 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]+'),
)
);