Kohana 3 эксперта, обработка аргументов запроса Route :: set (), request-> params () в K3 v.> = 3.1 - PullRequest
0 голосов
/ 31 марта 2011

Изначально в Kohana 3 вы могли передавать аргументы / параметры действия контроллера через URL-адрес как:

http:/website/controller/actionname/param1/param2/.../paramX

и обрабатывать его, просто определяя действие как:

public action_actionname($params)
{
   $params_array = explode("/", $params); 
   //you can now use $params_array[0], $params_array[1], ...
}

Похоже, что начиная с версии 3.1 они решили отказаться от этой функции (здесь ссылка ), и ее следует устранить в версии 3.2

И, похоже, они хотят, чтобы вы использовалиМетоды Route :: Set () и request-> param () .Означает ли это, что каждый раз, когда вы определяете метод / действие в контроллере, вы должны определить отдельную маршрутизацию для каждого аргумента где-то еще в вашем приложении?Может кто-нибудь, пожалуйста, объясните мне, как это работает в простых терминах.Это просто кажется ненужным "хлопотом", чтобы все это просто вызвать функцию.

1 Ответ

3 голосов
/ 01 апреля 2011

Возможно, вам следует рассмотреть возможность использования параметра regex в вашем маршруте, чтобы переопределить поведение соответствия по умолчанию ... Обычно я использую это для захвата нескольких параметров URL в одном "параметре" KO3. Пример:

Route::set('route1', '<controller>/<action>(/<param_list>)', array('param_list'=>'.*'))
->defaults(array(
    'controller'   => 'my_default_controller',
    'action'       => 'my_default_index'
));

Теперь в вашем контроллере $this->request->param("param_list") будет равно тому, что соответствует выражению регулярного выражения .*, что означает, что вы можете захватить оставшуюся часть URL-адреса, как вы надеялись, с косой чертой и всем!

...