Как расширить параметры URL-адреса в KohanaPHP?

Как передать дополнительные параметры в URL-адрес KohanaPHP (версия 3.1+), например …

http://example.com/blog/edit/4000/3200 

… где «блог» – это blog.php в папке контроллеров, «edit» – это метод контроллера, 4000 – параметр 1, который я могу использовать для тех, кто хочет отредактировать запись, а 3200 – это параметр 2, который я могу использовать для идентификатора записи?

Я получаю блог и редактирую детали. Проблема заключается в 4000 и 3200. Когда я запускаю этот URL-адрес, я получаю сообщение об ошибке: «404 – Не удалось найти блог соответствия маршруту / изменить / 4000/3200»

Я вынужден сделать что-то необычное с файлом .htaccess или передать параметры в качестве параметров запроса после вопросительного знака?

Related of "Как расширить параметры URL-адреса в KohanaPHP?"

Это объясняет, что делать:

http://kohanaframework.org/3.1/guide/kohana/routing

Но по существу, мне нужно отредактировать файл application \ bootstrap.php и изменить это:

 Route::set('default', '(<controller>(/<action>(/<id>)))') ->defaults(array( 'controller' => 'welcome', 'action' => 'index' )); по Route::set('default', '(<controller>(/<action>(/<id>)))') ->defaults(array( 'controller' => 'welcome', 'action' => 'index' )); 

к этому:

 Route::set('default', '(<controller>(/<action>(/<param1>)(/<param2>)))') ->defaults(array( 'controller' => 'welcome', 'action' => 'index' )); по Route::set('default', '(<controller>(/<action>(/<param1>)(/<param2>)))') ->defaults(array( 'controller' => 'welcome', 'action' => 'index' )); 

И теперь в моем файле контроллера blog.php теперь я могу передать 2 параметра в метод класса «action_edit» следующим образом:

 public function action_edit() { $sParam1 = $this->request->param('param1'); $sParam2 = $this->request->param('param2'); $this->response->body('param1=' . $sParam1 . ' param2=' . $sParam2); } 

Вам нужен такой маршрут в вашем bootstrap.php:

 Route::set('blog_edit', 'blog/edit/<param1>(/<param2>)') array( 'param1' => '[[:digit:]]{1,}', 'param2' => '[[:digit:]]{1,}', )) ->defaults(array( 'controller' => 'blog', 'action' => 'edit', )); по Route::set('blog_edit', 'blog/edit/<param1>(/<param2>)') array( 'param1' => '[[:digit:]]{1,}', 'param2' => '[[:digit:]]{1,}', )) ->defaults(array( 'controller' => 'blog', 'action' => 'edit', )); 

Примечание: « () » делает param2 необязательным.

В контроллере вы можете получить доступ к параметрам в качестве аргументов метода или через объект Request:

 class Controller_Blog { public function action_edit($param1, $param2) { // or $param1 = $this->request->param('param1'); $param2 = $this->request->param('param2'); // [...] } } 

Я не тестировал этот код, но он должен быть очень близок к тому, что вам нужно.

Ссылка на « Учебное пособие по Kohana PHP 3.0 (KO3), часть 6 »