Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 530

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-includes/cache.php on line 103

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-includes/theme.php on line 623
Работаем с маршрутами в CakePHP (часть 1) - Программируем на CakePHP


Сен 19 2008

Работаем с маршрутами в CakePHP (часть 1)

Раздел: МаршрутыМета @ 23:55

Под маршрутизацией в CakePHP понимается привязка определенных функций контроллера к URL-адресам страниц сайта. Это необходимо для того, чтобы адреса страниц были короткими, простыми и понятными. Такие адреса легко запоминаются и хорошо индексируются поисковиками. Все методы, связанные с маршрутизацией, находятся в классе Router, большинство из этих методов — статические. В версии CakePHP 1.2 весь класс Router был полностью переработан.

Маршруты по-умолчанию

Перед началом работы со сложными настройками, надо понимать как работают маршруты по-умолчанию, встроенные в ядро CakePHP. Даже без дополнительных правил, в простых приложениях можно вполне обойтись этими стандартными маршрутами. К любой функции контроллера можно обратиться просто указав имя этой функции в строке запроса. Также, в любую функцию можно передавать параметры. Шаблон такого запроса:

http://example.com/controller/action/param1/param2/param3

Если вы хотите обратиться к функции view() контроллера PostsController, то достаточно написать в строке адреса браузера http://example.com/posts/view/. Можно указать в строке адреса только имя контроллера. Тогда будет вызвана функция index(). Маршруты по-умолчанию позволяют передавать в функцию параметры. Их надо просто указать в строке адреса после имени вызываемой функции. Например, если первым параметром функции view() является номер записи, то можно обратиться к 25 записи запросом http://example.com/posts/view/25.

Именованные параметры

Новой в CakePHP 1.2 является возможность передачи в функцию именованных параметров. Независимо от расположения в строке запроса, вы можете одновременно задать для параметров имена и передать их значения. Например, запрос http://example.com/posts/view/title:first+post/category:general вызовет функцию view() контроллера PostsController. При этом, в функции будет определен массив $this->passedArgs, содержащий элементы с индексами ‘title’ и ‘category’, с соответствующими запросу значениями.

Вот несколько примеров с маршрутами по-умолчанию:

Запрос: /monkeys/jump
Вызывает: MonkeysController->jump();

Запрос: /products
Вызывает: ProductsController->index();

Запрос: /tasks/view/45
Вызывает: TasksController->view(45);

Запрос: /donations/view/recent/2001
Вызывает: DonationsController->view('recent', '2001');

Запрос: /contents/view/chapter:models/section:associations
Вызывает: ContentsController->view();
$this->passedArgs['chapter'] = 'models';
$this->passedArgs['section'] = 'associations';

Продолжение в следующем посте.

Теги: ,

2 Responses to “Работаем с маршрутами в CakePHP (часть 1)”

  1. Работаем с маршрутами в CakePHP (часть 3) - Программируем на CakePHP says:

    [...] Работаем с маршрутами в CakePHP (часть 1) [...]

  2. vectoroc says:

    Извращение какое-то эти именованные параметры…

Напиши комментарий!