Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP 3.x:带有查询字符串的路由_Php_Cakephp_Routes_Cakephp 3.0 - Fatal编程技术网

CakePHP 3.x:带有查询字符串的路由

CakePHP 3.x:带有查询字符串的路由,php,cakephp,routes,cakephp-3.0,Php,Cakephp,Routes,Cakephp 3.0,命名参数最终用CakePHP 3删除。现在我想知道是否有一种简单的方法来创建使用查询字符串的路由 现在我有: http://mysite/posts?page=2 我想: http://mysite/posts/2 我读过这本书,但没有找到有用的例子 当我说“一个简单的方法”时,我的意思是使用一个路由,而不是控制器或分页器 编辑: 我知道我能做到: $routes->connect('/posts/:page', ['controller' => 'Posts', 'actio

命名参数最终用CakePHP 3删除。现在我想知道是否有一种简单的方法来创建使用查询字符串的路由

现在我有:

http://mysite/posts?page=2
我想:

http://mysite/posts/2
我读过这本书,但没有找到有用的例子

当我说“一个简单的方法”时,我的意思是使用一个路由,而不是控制器或分页器


编辑: 我知道我能做到:

$routes->connect('/posts/:page', ['controller' => 'Posts', 'action' => 'index'], ['page' => '[0-9]+', 'pass' => ['page']]);
控制器:

public function index() {
    if($this->request->param('page'))
        $this->request->query['page'] = $this->request->param('page');

    //other code...
}
但这样我需要:

  • 修改我的控制器
  • 修改paginator(新的url有效,但CakePHP不会自动使用)
  • paginator——重新发明get参数最终被认为是个坏主意,paginator代码现在只需要get参数。您需要(这并不困难)模拟get参数以完全按照您的要求执行操作,但我警告不要这样做,并按照设计使用URL/get arguments/paginator。paginator-重新发明get参数最终被认为是一个坏主意,paginator代码现在只需要get参数。您将需要(这并不困难)模拟get参数以完全按照您的要求执行操作,但我警告不要这样做,并按照设计使用URL/get arguments/paginator。