Как расширить параметры на URL в KohanaPHP? - PullRequest
0 голосов
/ 10 апреля 2011

Как передать дополнительные параметры в URL в KohanaPHP (версия 3.1+) следующим образом ...

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

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

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>(/<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);
}
0 голосов
/ 10 апреля 2011

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

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

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

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

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 "

...