Кто-то может объяснить Kohana 3's система маршрутизации?

В bootstrap.php, где Вы устанавливаете маршруты, мне нелегко заставлять их работать. Я прочитал некоторую документацию только что, что я, может казаться, не нахожу снова, что это объясняет их. Вот один из моих примеров

Route::set('products', 'products/(type)', array('type' => '.+'))
    ->defaults(array(
    'controller' => 'articles',
    'action' => 'view_product',
    'page' => 'shock-absorbers',
    ));

Я думал, что это будет означать запрос как products/something загрузился бы articles контроллер, и action_view_product() метод. Но я не могу заставить это работать.

Кто-то может объяснить мне точно, как они работают, и каковы все параметры метода?

9
задан alex 12 September 2010 в 23:13
поделиться

3 ответа

Это не int и не guid; из файла справки MSDN ...

Идентификатор сеанса ASP.NET представляет собой случайно сгенерированное число, закодированное в 24-символьный ряд, состоящий из строчных символов от a до z и чисел от 0 до 5.

-121--2805885-

В Python 2.x input () «вычисляет» введенное значение. (см. справка (ввод) ). Поэтому при нажатии клавиши k , input () пытается найти, что такое k . Поскольку он не определен, возникает исключение NameError .

Используйте raw _ input () в Python 2.x. В 3.0x фиксирован вход () .

Если вы действительно хотите использовать input () (и это действительно не рекомендуется), то процитируйте вашу переменную k следующим образом:

>>> UserName = input("Please enter your name: ")
Please enter your name: "k"
>>> print UserName
k
-121--2461691-

Я подумал, что это будет означать запрос: как продукты/что-то загружается контроллер изделий и action _ view _ product controller . Но я не может заставить его работать.

Вы ошиблись жирным шрифтом. Он фактически загрузит action_view_product метод контроллера статей:

class Controller_Articles extends Controller {
   public function action_view_product() {
       $params = $this->request->param(); 
       // if the uri is `products/something' then $params['type'] == 'something'
   }
}

EDIT:

О Боже мой о Боже, почему я не заметил!!!

Фактическая проблема лежит в вашем образце маршрута! Это должны были быть products/( < тип >) с угловыми скобками. Они намекнут Кохане, что «тип» должен быть именем параметра, а не литералом.

5
ответ дан 4 December 2019 в 20:24
поделиться

Скобки указывают на дополнительные части (Regex будет соответствовать, если они отсутствуют). Они могут быть статическими и / или содержат именованные переменные. Угловые скобки указывают на названную переменную в маршруте, который доступен в контроллере через:

$this->request->param('type');

Я написал официальное руководство по маршрутизации, которое вы можете прочитать здесь , он должен ответить на все ваши вопросы.

3
ответ дан 4 December 2019 в 20:24
поделиться

UFF, извините, ниже, тогда и больше, то знаки не показывают правильно

'products/(type)' should be 'products/(<type>)'
3
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: