Сен 19 2008
Работаем с маршрутами в CakePHP (часть 1)
Под маршрутизацией в 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';
Продолжение в следующем посте.
Сентябрь 29th, 2008 at 21:01
[...] Работаем с маршрутами в CakePHP (часть 1) [...]
Ноябрь 30th, 2008 at 08:10
Извращение какое-то эти именованные параметры…