Cakephp分页呈现问题。我正在使用cakephp 2.0.6。当我尝试从其他动作渲染页面时它很好。但是,当我尝试转到下一页时,问题就开始了
我有以下功能
public function admin_index()
{
//Function listing
}
所有类型的用户(支持,员工等)都需要相同的功能。 所以我使用了setAction方法,如下所示
public function support_index()
{
$this->setAction('admin_index');
$this->render('admin_index');
}
我的分页代码如下:
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
但是当我尝试按照以下网址进入下一页时
http://www.example.com/support/users/admin_index/page:2
http://www.example.com/employee/users/admin_index/page:2
但需要提供以下输出:
http://www.example.com/support/users/index/page:2
http://www.example.com/employee/users/index/page:2
问题是$ this-&gt; setAction('admin_index');我认为..任何人都有所帮助
答案 0 :(得分:1)
我在以下文件lib/Cake/Controller/Controller.php
在setAction方法中所做的更改现在运行良好。特别是2.0.6的问题
public function setAction($action) {
$this->request->params['action'] = $action; //Commented this Line
$this->view = $action; //Commented this Line
$this->request->action = $action; // Added this Line
$args = func_get_args();
unset($args[0]);
return call_user_func_array(array(&$this, $action), $args);
}
答案 1 :(得分:0)
的setAction
内部将一个动作重定向到另一个动作。不像Controller :: redirect();
那样执行另一个HTTP请求重定向是一个不同的术语,实际上当它重定向到另一个动作时,它将自动成为该动作,这就是为什么paginate不会更改url。
您可以使用以下代码代替使用setAction:
public function admin_index()
{
$this->set('data',$this->__paginatedata());
}
function __paginatedata(){
$this->paginate = array('limit'=>5);
$this->Model->recursive = 0;
return $this->paginate();
}
public function support_index()
{
$this->set('data',$this->__paginatedata());
$this->render('admin_index');
}