使用查询字符串的不同分页条件[CakePHP 3]
用户必须在URL中传递一个查询字符串,该字符串将返回不同的分页,如果他输入了无、一个或两个查询,则结果将更改。下面的代码是用CakePHP编写的,但是看起来很可怕,没有那些if,else-if条件,有没有更好的方法来实现我想要做的事情使用查询字符串的不同分页条件[CakePHP 3],php,url,cakephp,cakephp-3.0,Php,Url,Cakephp,Cakephp 3.0,用户必须在URL中传递一个查询字符串,该字符串将返回不同的分页,如果他输入了无、一个或两个查询,则结果将更改。下面的代码是用CakePHP编写的,但是看起来很可怕,没有那些if,else-if条件,有没有更好的方法来实现我想要做的事情 if($this->request->query('date')) { $this->paginate = [ 'conditions' => [ 'Reservations.id_ven
if($this->request->query('date'))
{
$this->paginate = [
'conditions' => [
'Reservations.id_venue' => $this->Auth->user('id_venue_manager'),
'Reservations.date' => $this->request->query('date'),
],
];
}
else if($this->request->query('id_user'))
{
$this->paginate = [
'conditions' => [
'Reservations.id_venue' => $this->Auth->user('id_venue_manager'),
'Reservations.id_user' => $this->request->query('id_user'),
],
];
}
else if($this->request->query('id_user') && $this->request->query('date'))
{
$this->paginate = [
'conditions' => [
'Reservations.id_venue' => $this->Auth->user('id_venue_manager'),
'Reservations.id_user' => $this->request->query('id_user'),
'Reservations.date' => $this->request->query('date'),
],
];
}
else
{
$this->paginate = [
'conditions' => [
'Reservations.id_venue' => $this->Auth->user('id_venue_manager'),
],
];
}
试试这个
<?php
public function someMethod() {
$this->paginate = [
'conditions' => $this->getPaginationConditions();
];
}
private function getPaginationConditions()
{
$conditions = ['Reservations.id_venue' => $this->Auth->user('id_venue_manager')];
if ($date = $this->request->query('date')) {
$conditions['Reservations.date'] = $date;
}
if ($user = $this->request->query('id_user')) {
$conditions['Reservations.id_user'] = $user;
}
return $conditions;
}
我会改用这个插件:)