Zend Framework. Router_Route.

Первый, и пожалуй самый используемый, Zend_Controller_Router_Route является мощным инструментом для роунтинга запроса в большинстве случаев. Эта статья опишет основы работы с данным роутом, и все его параметры.

Если вы не читали начала цикла этих статей, то рекомендую начать с них вот тут: часть-1.

Итак, для того чтобы использовать в нашем приложении данный тип роута, все что на нужно – это инициализировать его и добавить в роутер.

 

Это стандартная запись для нового роута. Минимум что необходимо указать. Но давайте пойдем дальше. Создав такой роут и зарегистрировав его в роутере, мы получим обработку запросов вроде этого http://www.yourdomain.ru/product/vodka. Наш роут состоит из первого аргумента – маска пути по нашему ресурсу, и из второго – указание контроллера и экшена, которые должны срабатывать на такого типа запросы. Роутер запишет эти контроллер и экшен в объект запроса (Request object) и цикл жизни приложения продолжится. Но у конструктора роута есть еще и третий аргумент. Туда можно записать маску в формате регулярного выражения regex.  Сейчас разберемся для чего это нужно.

Как мы уже сказали, первый аргумент это своего рода маска. Здесь есть несколько правил его составления. При записи этой маски можно использовать спец.символы. Среди них двоеточие (:) и звездочка (*).

Двоеточие говорит, что далее будет сегмент переменной. Эта переменная может использоваться внутри конкретного контроллера. Так, например, в нашем примере внутри контроллера можно получить значение переменной name так $this->_getParam(‘name’). Оно, кстати говоря, будет равно “vodka”. Возможен случай, когда пользователь в своем запросе на месте переменной не укажет ничего. Такой случай неплохо было бы предусмотреть, и это можно сделать, добавив в массив одну запись.

 

Такая запись создаст нам для порядка значение переменного сегмента по умолчанию.

Рассмотрим второй спец.символ звездочка. Она указывает, что далее могут следовать любые сегменты. Если бы мы добавили это в конце нашего роуте так ‘product/:name/*’, то могли бы получать различные параметры после сегмента name. Это позволит нам из URL http://www.yourdomain.ru/product/vodka/zakuska/ogurec извлечь еще и переменную “zakuska” со значение “ogurec”. Отметим, что в этом нет ничего удивительного, так как после сегмента name в силу вступает роут по умолчанию, которые рассматривает сегменты в парах вида “name_var/value_var”.

Как мы уже отметили третьим параметром можно передать регулярное выражение. Это необходимо для дополнительного контроля за переменными сегментами. Так, например, мы можем указать в роуте, что сегмент name должен содержать только алфавитные символы.

 

Здесь можно использовать всю мощь регулярных выражений и задавать сложные условия. Для более полного осознания лучше перечитать мануалы по regex

4 комментария Zend Framework. Router_Route.

  1. Пингбэк: Zend Framework. Zend_Controller_Router_Route_Static. | I-paper.ru

  2. Пингбэк: Zend Framework. Zend_Controller_Router_Route_Regex. | I-paper.ru

  3. Пингбэк: Zend Framework. Zend_Controller_Router_Route_Static. | I-paper.ru

  4. Пингбэк: Zend Framework. Route_Regex. | I-paper.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">