| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect3 id="zend.controller.router.routes.hostname">
- <title>Zend_Controller_Router_Route_Hostname</title>
- <para>
- <classname>Zend_Controller_Router_Route_Hostname</classname> является
- маршрутом, основанным на имени хоста. Он работает аналогично
- стандартному маршруту, но использует имя хоста в URL вместо пути.
- </para>
- <para>
- Возьмем пример из описания стандартного маршрута и посмотрим, как
- это будет выглядеть при использовании имени хоста. Вместо того, чтобы
- указывать пользователя через путь, нам требуется, чтобы можно было
- набрать URL вида <code>http://martel.users.example.com</code> для
- того, чтобы увидеть информацию о пользователе "martel":
- </para>
- <programlisting language="php"><![CDATA[
- $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
- ':username.users.example.com',
- array(
- 'controller' => 'profile',
- 'action' => 'userinfo'
- )
- );
- $plainPathRoute = new Zend_Controller_Router_Route_Static('');
- $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
- ]]></programlisting>
- <para>
- Первым параметром в конструкторе
- <classname>Zend_Controller_Router_Route_Hostname</classname> является
- определение маршрута, которое будет сопоставляться с именем хоста.
- Определения маршрутов содержат статические и динамические части,
- разделенные точкой ('.'). Динамические части, называемые
- переменными, помечаются знаком двоеточия:
- <code>:username</code>. Статические части являются обычным текстом:
- <code>user</code>.
- </para>
- <para>
- Технически маршруты по имени хоста могут использоваться сами по
- себе, но этого никогда не следует делать по той причине, что
- сам по себе такой маршрут может соответствовать любому
- пути. Поэтому нужно объединять маршруты по имени хоста
- с маршрутами по пути. Это можно делать так, как
- показано в примере выше - путем вызова
- <varname>$hostnameRoute->chain($pathRoute);</varname>.
- При этом <varname>$hostnameRoute</varname> не изменяется, но будет
- возвращен новый маршрут
- (<classname>Zend_Controller_Router_Route_Chain</classname>), который
- может быть передан маршрутизатору.
- </para>
- </sect3>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|