CakePHP - Manual/Developing/Configuration /wiki/Manual/Developing/Configuration History/revisions of CakePHP/Manual/Developing/Configuration en-us 2008-10-31 22:57:50 /wiki/Manual/Developing/Configuration/show?time=2008-10-31+22%3A57%3A50 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.developing.configuration" href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2008-10-31+22%3A57%3A50">2008-10-31 22:57:50</a> и <a href="/wiki/Manual/Developing/Configuration">2008-10-31 22:58:01</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><ul><li> <span class="missingpage">Самонастройка CakePHP</span><a href="/wiki/Bootstrapping/edit?add=1" title="Создать эту страницу">?</a></li></ul></div><br /> <b>Удалено:</b><br /> <div class="deletions"><ul><li> <span class="missingpage">Самонастройка ~CakePHP</span><a href="/wiki/Bootstrapping/edit?add=1" title="Создать эту страницу">?</a></li></ul></div></div> 2008-10-31 22:50:56 /wiki/Manual/Developing/Configuration/show?time=2008-10-31+22%3A50%3A56 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2008-10-31+22%3A50%3A56">2008-10-31 22:50:56</a> и <a href="/wiki/Manual/Developing/Configuration?time=2008-10-31+22%3A57%3A50">2008-10-31 22:57:50</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><ul><li> <span class="missingpage">Самонастройка ~CakePHP</span><a href="/wiki/Bootstrapping/edit?add=1" title="Создать эту страницу">?</a></li></ul></div></div> 2008-05-17 14:42:03 /wiki/Manual/Developing/Configuration/show?time=2008-05-17+14%3A42%3A03 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2008-05-17+14%3A42%3A03">2008-05-17 14:42:03</a> и <a href="/wiki/Manual/Developing/Configuration?time=2008-10-31+22%3A50%3A56">2008-10-31 22:50:56</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><ul><li> <span class="missingpage">Custom Inflections</span><a href="/wiki/CustomInflections/edit?add=1" title="Создать эту страницу">?</a></li></ul></div></div> 2008-05-17 14:36:52 /wiki/Manual/Developing/Configuration/show?time=2008-05-17+14%3A36%3A52 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2008-05-17+14%3A36%3A52">2008-05-17 14:36:52</a> и <a href="/wiki/Manual/Developing/Configuration?time=2008-05-17+14%3A42%3A03">2008-05-17 14:42:03</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><ul><li> <span class="missingpage">Настройка роутов (маршрутизаций)</span><a href="/wiki/Routes/edit?add=1" title="Создать эту страницу">?</a></li></ul></div><br /> <b>Удалено:</b><br /> <div class="deletions"><ul><li> <span class="missingpage">Настройка роутов (маршрутизаций</span><a href="/wiki/Routes/edit?add=1" title="Создать эту страницу">?</a>)</li></ul></div></div> 2008-01-17 14:15:00 /wiki/Manual/Developing/Configuration/show?time=2008-01-17+14%3A15%3A00 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2008-01-17+14%3A15%3A00">2008-01-17 14:15:00</a> и <a href="/wiki/Manual/Developing/Configuration?time=2008-05-17+14%3A36%3A52">2008-05-17 14:36:52</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><ul><li> <span class="missingpage">Настройка базы данных</span><a href="/wiki/Database/edit?add=1" title="Создать эту страницу">?</a> </li><li> <span class="missingpage">Настройка ядра</span><a href="/wiki/Core/edit?add=1" title="Создать эту страницу">?</a> </li><li> <span class="missingpage">Настройка роутов (маршрутизаций</span><a href="/wiki/Routes/edit?add=1" title="Создать эту страницу">?</a>)</li></ul></div><br /> <b>Удалено:</b><br /> <div class="deletions"><!--notypo--><fieldset class="table_of_contents"><legend><strong> Оглавление документа </strong></legend></fieldset><!--/notypo--><a name="h85-1"></a><h2>Настройка базы данных</h2> CakePHP ожиданные что&nbsp;данные о&nbsp;настройке подключения к&nbsp;базе данных будут располагаться в&nbsp;файле <tt>app/config/database.php</tt>. Файл с&nbsp;образцом настройки располагает по&nbsp;адресу <tt>app/config/database.php.default</tt>. Файл с&nbsp;готовой конфигурацией должен выглядеть так:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> var&nbsp;$default&nbsp;=&nbsp;array('driver'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'mysql',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'persistent'&nbsp;&nbsp;=&gt;&nbsp;false,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'host'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'localhost',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'login'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'cakephpuser',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'password'&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'c4k3roxx!',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'database'&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'my_cakephp_project',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'prefix'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'');</span> </code></div><!--/notypo--><div style="float:center; text-align:center">Пример конфигурации базы данных</div><br /> Если в&nbsp;модели не&nbsp;объявлена переменная <tt>$useDbConfig</tt> с&nbsp;названием используемых параметров подключения, то&nbsp;CakePHP будет использовать настройки определенные в&nbsp;массиве с&nbsp;названием <tt>$default</tt>. Например, если моему приложению требуется подключиться к&nbsp;еще одной базе данных, помимо основной, то&nbsp;я просто могу создать еще&nbsp;один массив с&nbsp;настройками (например <tt>$legacy</tt>) аналогичный по&nbsp;структуре массиву по&nbsp;умолчанию и&nbsp;в модели объявить, что&nbsp;хочу работать с&nbsp;другой базой данных так: <tt>var $useDbConfig = 'legacy';</tt>.<br /> Замените пары ключ/значение в&nbsp;массиве настроек на&nbsp;ваши.<br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><div style="float:center; text-align:center"><strong>Ключ</strong></div></td><td class="usercell"><div style="float:center; text-align:center"><strong>Значение</strong></div></td></tr> <tr class="userrow"><td class="usercell">driver</td><td class="usercell">Имя драйвера базы данных для&nbsp;этой конфигурации.<br /> Например: mysql, postgres, sqlite, pear-drivername, adodb-drivername, mssql, oracle или&nbsp;odbc.</td></tr> <tr class="userrow"><td class="usercell">persistent</td><td class="usercell">Будет ли&nbsp;использоваться постоянное соединение с&nbsp;базой данных</td></tr> <tr class="userrow"><td class="usercell">host</td><td class="usercell">Имя сервера, на&nbsp;котором расположена база данных (или его&nbsp;IP)</td></tr> <tr class="userrow"><td class="usercell">login</td><td class="usercell">Логин для&nbsp;доступа к&nbsp;базе данных</td></tr> <tr class="userrow"><td class="usercell">password</td><td class="usercell">Пароль доступа к&nbsp;базе данных</td></tr> <tr class="userrow"><td class="usercell">database</td><td class="usercell">Имя базы данных для&nbsp;текущего соединения</td></tr> <tr class="userrow"><td class="usercell">prefix (опционально)</td><td class="usercell">Cake будет счиать что&nbsp;все таблицы относящиеся к&nbsp;нему имеют этот префикс. Если префикс не&nbsp;используется &mdash; оставьте пустую строку.</td></tr> <tr class="userrow"><td class="usercell">port (опционально)</td><td class="usercell">TCP порт или&nbsp;сокет Unix, который используется для&nbsp;доступа к&nbsp;базе данных.</td></tr> <tr class="userrow"><td class="usercell">encoding</td><td class="usercell">Указывает в&nbsp;какой кодировке отправлять запросы к&nbsp;базе данных</td></tr> <tr class="userrow"><td class="usercell">schema</td><td class="usercell">Используется в&nbsp;базе данных PostgreSQL, указывает на&nbsp;то какая схема используется</td></tr> </table> Заметим, что&nbsp;параметр <tt>prefix</tt> актуален для&nbsp;таблиц, а&nbsp;не Моделей. Например, если вы&nbsp;создаете таблицу для&nbsp;объединения двух ваших моделей Apple и&nbsp;Flavor, то&nbsp;таблица должна называться <tt>prefix_apples_flavors</tt> (<strong>не</strong> <tt>prefix_apples_prefix_flavors</tt>), а&nbsp;в настройках соединения указан ключ <tt>prefix</tt> со&nbsp;значением <tt>'prefix_'</tt>.<br /> Сейчас вы&nbsp;можете взглянуть в&nbsp;раздел Соглашения, который недавно прочитали. Правильное название для&nbsp;вашей таблицы (а так&nbsp;же&nbsp;некоторых колонок) облегчит разработку и&nbsp;поможет вам&nbsp;избежать лишних настроек.<a name="h85-2"></a><h2>Настройка ядра</h2> Настройки конфигурации CakePHP расположены в&nbsp;файле <tt>/app/config/core.php</tt>. Этот файл содержит переменные и&nbsp;константы класса <tt>Configure</tt>, которые определяют поведение вашего приложения. Прежде чем&nbsp;погрузиться в&nbsp;детали настроек, вы&nbsp;должны ознакомиться с&nbsp;классом <tt>Configure</tt>.<a name="h85-3"></a><h3>Класс конфигурации</h3> Не&nbsp;смотря на&nbsp;то, что&nbsp;большинство настроек в&nbsp;CakePHP уже&nbsp;предустановлены, бывает полезно иметь свой вариант конфигурации. Раньше, для&nbsp;того чтобы настроить Cake, необходимо было указать значения разных переменных в&nbsp;нескольких файлах. Разумеется, при&nbsp;каждом обращении приходилось все&nbsp;эти файлы загружать.<br /> Новый класс <tt>Configure</tt> может использоваться для&nbsp;хранения любых значений. Будьте острожны &mdash; этот класс может хранить что&nbsp;угодно и&nbsp;давать доступ к&nbsp;этим данным из&nbsp;любой части приложения &mdash; прекрасное искушение к&nbsp;тому чтобы разорвать шаблон MVC. Основная цель этого класса, все&nbsp;же, хранить ту&nbsp;информацию, которая должна быть доступна максимальному количеству файлов вашего приложения.<br /> Этот класс действует как&nbsp;одиночка и&nbsp;его методы могут быть вызваны из&nbsp;любой точки вашего приложения.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php&nbsp;Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #DD0000">'debug'</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><a name="h85-4"></a><h4>Методы конфигурации</h4><a name="h85-5"></a><h5>write(string $key, mixed $value)</h5> Используйте <tt>write()</tt> чтобы сохранить данные в&nbsp;конфигурации приложения.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company.name'</span><span style="color: #007700">,</span><span style="color: #DD0000">'Pizza,&nbsp;Inc.'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company.slogan'</span><span style="color: #007700">,</span><span style="color: #DD0000">'Пицца&nbsp;для&nbsp;вашего&nbsp;тела&nbsp;и&nbsp;души'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> Примечание: используйте точку в&nbsp;параметре <tt>$key</tt>. Это&nbsp;поможет вам&nbsp;разграничить конфигурацию на&nbsp;логические группы.<br /> Приведенный выше пример может быть так&nbsp;же&nbsp;записан при&nbsp;помощи одного вызова.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">write</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'Company'</span><span style="color: #007700">,array(</span><span style="color: #DD0000">'name'</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">'Pizza,&nbsp;Inc.'</span><span style="color: #007700">,</span><span style="color: #DD0000">'slogan'</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">'Пицца&nbsp;для&nbsp;вашего&nbsp;тела&nbsp;и&nbsp;души'</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> Вы&nbsp;можете использовать <tt>Configure::write('debug', $int)</tt> для&nbsp;того чтобы переключаться между режимами отладки на&nbsp;лету. Особенно полезно это&nbsp;для AMF&nbsp;или SOAP, где&nbsp;отладочная информация может вызывать большие проблемы разбора содержимого.<a name="h85-6"></a><h5>read(string $key = 'debug')</h5> Используйте метод <tt>read()</tt> для&nbsp;того чтобы читать конфигурационную информацию. По&nbsp;умолчанию CakePHP возвращает информацию об&nbsp;уровне отладки, если параметр не&nbsp;передан. Используя наши примеры выше для&nbsp;функции <tt>write()</tt>, мы&nbsp;можем получить наши данные обратно.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company.name'</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//вернет:&nbsp;'Pizza,&nbsp;Inc.'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company.slogan'</span><span style="color: #007700">);&nbsp;&nbsp;</span><span style="color: #FF8000">//вернет:&nbsp;'Пицца&nbsp;для&nbsp;вашего&nbsp;тела&nbsp;и&nbsp;души'<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//вернет:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">array(</span><span style="color: #DD0000">'name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Pizza,&nbsp;Inc.'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'slogan'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Пицца&nbsp;для&nbsp;вашего&nbsp;тела&nbsp;и&nbsp;души'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><a name="h85-7"></a><h5>delete(string $key)</h5> Используется для&nbsp;удаления информации из&nbsp;конфигурации.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php&nbsp;Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">delete</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company.name'</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><a name="h85-8"></a><h5>load(string $path)</h5> Используйте этот метод для&nbsp;загрузки конфигурации из&nbsp;какого-либо внешнего файла.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> /app/config/messages.php<br /><span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;$config</span><span style="color: #007700">[</span><span style="color: #DD0000">'Company'</span><span style="color: #007700">][</span><span style="color: #DD0000">'name'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'Pizza,&nbsp;Inc.'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">[</span><span style="color: #DD0000">'Company'</span><span style="color: #007700">][</span><span style="color: #DD0000">'slogan'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'Pizza&nbsp;for&nbsp;your&nbsp;body&nbsp;and&nbsp;soul'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">[</span><span style="color: #DD0000">'Company'</span><span style="color: #007700">][</span><span style="color: #DD0000">'phone'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'555-55-55'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <!--notypo--><div class="code"><code><span style="color: #000000"> /app/config/core.php<br /><span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">load</span><span style="color: #007700">(</span><span style="color: #DD0000">'messages'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Configure</span><span style="color: #007700">::</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #DD0000">'Company.name'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> Примечание: все&nbsp;переменные для&nbsp;загрузки в&nbsp;конфигурацию должны представлять из&nbsp;себя массив ключ-значение с&nbsp;названием <tt>$config</tt>. Все&nbsp;прочие переменные будут проигнорированы при&nbsp;использовании функции <tt>load()</tt>.<a name="h85-9"></a><h5>version()</h5> Возвращает версию используемого ядра CakePHP.<a name="h85-10"></a><h4>Переменные конфигурации</h4> Набор переменных конфигурации хранится в&nbsp;файле <tt>/app/config/core.php</tt>. Ниже приводится описание переменных конфигурации ядра, а&nbsp;так же&nbsp;действия приложения, к&nbsp;которым они&nbsp;приводят.<br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><div style="float:center; text-align:center"><strong>Переменная конфигурации</strong></div></td><td class="usercell"><div style="float:center; text-align:center"><strong>Описание</strong></div></td></tr> <tr class="userrow"><td class="usercell">debug</td><td class="usercell">Изменение режима вывода отладки.<br /> 0 = Режим готовой продукции. Вывода отладки нет.<br /> 1 = Вывод ошибок и&nbsp;предупреждений.<br /> 2 = Вывод ошибок, предупреждений и&nbsp;SQL запросов.<br /> 3 = Вывод ошибок, предупреждений, SQL&nbsp;запросов и&nbsp;дампа всех переменных, доступных в&nbsp;контроллере.</td></tr> <tr class="userrow"><td class="usercell">App.baseUrl</td><td class="usercell">Раскомментируйте определение этой переменной, если не&nbsp;планируете использовать Apache и&nbsp;mod_rewrite для&nbsp;вашего приложения на&nbsp;CakePHP. Не&nbsp;забудьте так&nbsp;же&nbsp;удалить .htaccess файлы.</td></tr> <tr class="userrow"><td class="usercell">Routing.admin</td><td class="usercell">Раскомментируйте эту&nbsp;директиву, если хотите использовать роутинг для&nbsp;администратора. В&nbsp;значении должно быть название первой части адреса администратора. Подробнее эта&nbsp;опция будет описана позже.</td></tr> <tr class="userrow"><td class="usercell">Cache.disable</td><td class="usercell">Когда эта&nbsp;переменная устанавливается в&nbsp;<tt>true</tt> &mdash; на&nbsp;всем сайте отключается кеширование.</td></tr> <tr class="userrow"><td class="usercell">Cache.check</td><td class="usercell">Если установить в&nbsp;<tt>true</tt>, то&nbsp;будет возможно работать с&nbsp;кешем. Активация в&nbsp;контроллерах по&nbsp;прежнему необходима, но&nbsp;эта переменная дает возможность в&nbsp;принципе обнаружить эти&nbsp;настройки.</td></tr> <tr class="userrow"><td class="usercell">Session.save</td><td class="usercell">Сообщает CakePHP каким образом должны храниться сессии.<br /> php&nbsp;= Использовать стандартный механизм php.<br /> cake = Сохранять сессии в&nbsp;<tt>/app/tmp</tt>.<br /> database = Сохранять сессии в&nbsp;таблице базы данных. Перед использованием такого способа вам&nbsp;надо выполнить в&nbsp;базе данных запрос, лежащий изначально в&nbsp;файле <tt>/app/config/sql/sessions.sql</tt>.</td></tr> <tr class="userrow"><td class="usercell">Session.table</td><td class="usercell">Название таблицы (префикс не&nbsp;используется) для&nbsp;хранения сессий.</td></tr> <tr class="userrow"><td class="usercell">Session.database</td><td class="usercell">Имя базы данных с&nbsp;таблицей для&nbsp;хранения сессий.</td></tr> <tr class="userrow"><td class="usercell">Session.cookie</td><td class="usercell">Название Cookie в&nbsp;которой будет храниться ключ сессии.</td></tr> <tr class="userrow"><td class="usercell">Session.timeout</td><td class="usercell">Число в&nbsp;секундах, на&nbsp;основе которого будет вычислено время жизни Cookie с&nbsp;ключом сессии. Фактическое время зависит от&nbsp;Security.level</td></tr> <tr class="userrow"><td class="usercell">Session.start</td><td class="usercell">Если установить в&nbsp;<tt>true</tt>, то&nbsp;сессия будет создаваться при&nbsp;входе каждого нового пользователя.</td></tr> <tr class="userrow"><td class="usercell">Session.checkAgent</td><td class="usercell">При <tt>false</tt> CakePHP не&nbsp;будет проверять неизменность браузера пользователя.</td></tr> <tr class="userrow"><td class="usercell">Security.level</td><td class="usercell">Уровень безопасности CakePHP. Время действия сессии, объявленное в&nbsp;<tt>Session.timeout</tt> умножается на&nbsp;это значение.<br /> Возможные значения:<br /> 'high' = x&nbsp;10<br /> 'medium' = x&nbsp;100<br /> 'low' = x&nbsp;300</td></tr> <tr class="userrow"><td class="usercell">Security.salt</td><td class="usercell">Произвольный набор символов. Используется для&nbsp;создания хешей.</td></tr> <tr class="userrow"><td class="usercell">Acl.classname, Acl.database</td><td class="usercell">Константы используются в&nbsp;функциях Списков Контроля Доступа (ACL). Смотрите главу с&nbsp;таким названием для&nbsp;выяснения подробностей.</td></tr> </table> Примечание: настройки конфигурации кеша находятся в&nbsp;файле <tt>core.php</tt>. Мы&nbsp;поговорим об&nbsp;этом позже и&nbsp;опишем эти&nbsp;настройки.<br /> Класс конфигурации используется для&nbsp;того чтобы считывать и&nbsp;записывать переменные на&nbsp;лету. Это&nbsp;может быть особенно удобно, если вы, например, хотите выводить отладочную информацию только для&nbsp;некоторых частей вашего приложения.<a name="h85-11"></a><h4>Константы конфигурации</h4> Хотя и&nbsp;большинство опций представляют из&nbsp;себя свойства класса конфигурации, все&nbsp;же&nbsp;есть несколько констант, которые Cake использует в&nbsp;своей работе.<br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><div style="float:center; text-align:center"><strong>Константа</strong></div></td><td class="usercell"><div style="float:center; text-align:center"><strong>Описание</strong></div></td></tr> <tr class="userrow"><td class="usercell">COMPRESS_CSS</td><td class="usercell">Если установить в&nbsp;<tt>true</tt>, то&nbsp;CSS файлы будут сжиматься при&nbsp;отдаче. Для&nbsp;этого необходимо чтобы директория <tt>/var/cache</tt> была доступна для&nbsp;записи на&nbsp;сервере. Для&nbsp;использования опции прописывайте путь к&nbsp;вашим CSS&nbsp;файлам как&nbsp;<tt>/ccss</tt> (вместо <tt>/css</tt>) или&nbsp;используйте <tt>Controller::cssTag()</tt>.</td></tr> <tr class="userrow"><td class="usercell">LOG_ERROR</td><td class="usercell">Константа ошибки. Используется для&nbsp;разделения типа записи в&nbsp;лог: сообщения об&nbsp;ошибках и&nbsp;отладочные сообщения. Сейчас PHP&nbsp;поддерживает <tt>LOG_DEBUG</tt>.</td></tr> </table><a name="h85-12"></a><h2>Настройка роутов (маршрутизаций)</h2> Роуты &mdash; это&nbsp;функционал, который сопоставляет набранный URL-адрес с&nbsp;действием контроллера. Роуты были добавлены в&nbsp;CakePHP, чтобы сделать адреса более настраиваемыми и&nbsp;гибкими. Если вы&nbsp;используете Apache и&nbsp;mod_rewrite, то&nbsp;роуты можно и&nbsp;не использовать, но&nbsp;все же&nbsp;их использование позволит куда большую гибкость, чем&nbsp;при стандартных средствах.<br /> В&nbsp;CakePHP 1.2 функциональность роутов была сильно расширена.<br /> Прежде чем&nbsp;создавать свои роуты, вы&nbsp;должны узнать какие в&nbsp;CakePHP есть роуты по&nbsp;умолчанию. Изначально CakePHP будет понимать &laquo;красивые&raquo; адреса в&nbsp;любом приложении. Для&nbsp;того чтобы вызвать какое-то действие &mdash; достаточно просто указать в&nbsp;адресе его&nbsp;имя. Именно таким же&nbsp;образом можно передать параметры в&nbsp;это действие.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> http://example.com/controller/action/param1/param2/param3</span> </code></div><!--/notypo--><div style="float:center; text-align:center">URL-шаблон роутов по&nbsp;умолчанию</div><br /> URL&nbsp;<tt>/posts/view</tt> будет переадресован к&nbsp;методу <tt>view()</tt> контроллера <tt>PostsController</tt>, URL&nbsp;<tt>/products/viewClearance</tt> &mdash; к&nbsp;методу <tt>view_clearance()</tt> контроллера <tt>ProductsController</tt>. Если в&nbsp;URL действие не&nbsp;объявлено, то&nbsp;переадресация идет к&nbsp;методу <tt>index()</tt>.<br /> Стандартная маршрутизация также позволяет в&nbsp;URL передавать параметры в&nbsp;действия. Например URL&nbsp;<tt>/posts/view/25</tt> будет означать вызов функции <tt>view(25)</tt> класса <tt>PostsController</tt>.<br /> В&nbsp;CakePHP 1.2 появилась возможность называть параметры. Можно дать параметру имя&nbsp;и&nbsp;отправить его&nbsp;значение при&nbsp;помощи URL. Запрос на&nbsp;адрес <tt>/posts/view/title:first+post/category:general</tt> приведет к&nbsp;обращению к&nbsp;действию <tt>view()</tt> контроллера <tt>PostsController</tt>. Внутри действия вы&nbsp;можете обратиться к&nbsp;переданным параметрам, как&nbsp;к&nbsp;<tt>$this-&gt;passedArgs['title']</tt> и&nbsp;<tt>$this-&gt;passedArgs['category']</tt>.<br /> Некоторое резюме роутов по&nbsp;умолчанию, которые могут быть вам&nbsp;полезны:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> URL:&nbsp;/monkeys/jump<br />Переадресация:&nbsp;MonkeysController-&gt;jump();<br />&nbsp;<br />URL:&nbsp;/products<br />Переадресация:&nbsp;ProductsController-&gt;index();<br />&nbsp;<br />URL:&nbsp;/tasks/view/45<br />Переадресация:&nbsp;TasksController-&gt;view(45);<br />&nbsp;<br />URL:&nbsp;/donations/view/recent/2001<br />Переадресация:&nbsp;DonationsController-&gt;view('recent',&nbsp;'2001');<br />&nbsp;<br />URL:&nbsp;/contents/view/chapter:models/section:associations<br />Переадресация:&nbsp;ContentsController-&gt;view();<br />$this-&gt;passedArgs['chapter']&nbsp;=&nbsp;'models';<br />$this-&gt;passedArgs['section']&nbsp;=&nbsp;'associations';</span> </code></div><!--/notypo--><div style="float:center; text-align:center">Примеры использования стандартных роутов</div><br /> Определение своих роутов позволит вам&nbsp;определить как&nbsp;ваше приложение должно реагировать на&nbsp;тот или&nbsp;иной URL. Определите свои собственные роуты в&nbsp;файле <tt>/app/config/routes.php</tt>, используя метод <tt>Router::connect()</tt>.<br /> Метод <tt>connect()</tt> принимает до&nbsp;трех параметров: URL, при&nbsp;котором срабатывает роут, значение по&nbsp;умолчанию для&nbsp;любых элементов запроса и&nbsp;регулярное выражение, призванное помочь роуту найти необходимые части URL.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> Router::connect(<br />&nbsp;&nbsp;&nbsp;&nbsp;'URL',<br />&nbsp;&nbsp;&nbsp;&nbsp;array('paramName'&nbsp;=&gt;&nbsp;'defaultValue'),<br />&nbsp;&nbsp;&nbsp;&nbsp;array('paramName'&nbsp;=&gt;&nbsp;'matchingRegex')<br />)</span> </code></div><!--/notypo--><div style="float:center; text-align:center">Шаблон определения роутов</div><br /> Первый параметр сообщает маршрутизатору какие URL&nbsp;вы&nbsp;хотите контролировать. URL&nbsp;должен представлять из&nbsp;себя обычную строку адреса, разделенную слешами, так&nbsp;же&nbsp;может содержать место подстановки (обозначено звездочкой (*)) или&nbsp;произвольный элемент роута (часть URL&nbsp;с&nbsp;двоеточием вначале). Использование символа подстановки сообщает роутам какие части адреса вы&nbsp;хотите разбирать, а&nbsp;использование произвольных элементов (тех, что&nbsp;с&nbsp;двоеточием) показывает какие части вы&nbsp;хотите передавать в&nbsp;действия контроллера.<br /> После того, как&nbsp;вы&nbsp;указали адрес, вы&nbsp;используете два&nbsp;последних параметра <tt>connect()</tt>, чтобы указать элементы, которые необходимо искать в&nbsp;адресе, если он&nbsp;совпал. Второй параметр представляет из&nbsp;себя ассоциативный массив. Ключами в&nbsp;этом массиве являются элементы определенные вами в&nbsp;адресе (те, что&nbsp;двоеточием вначале) или&nbsp;стандартные элементы роутов: <tt>:controller</tt>, <tt>:action</tt>, and&nbsp;<tt>:plugin</tt>. Значениями будут значения определенные вами по&nbsp;умолчанию для&nbsp;этих элементов. Давайте посмотрим на&nbsp;некоторые примеры, чтобы все&nbsp;стало ясно, перед тем&nbsp;как начнем использовать третий параметр <tt>connect()</tt>.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> Router::connect(<br />&nbsp;&nbsp;&nbsp;&nbsp;'/pages/*',<br />&nbsp;&nbsp;&nbsp;&nbsp;array('controller'&nbsp;=&gt;&nbsp;'pages',&nbsp;'action'&nbsp;=&gt;&nbsp;'display')<br />);</span> </code></div><!--/notypo--><br /> Этот роут уже&nbsp;написан в&nbsp;файле <tt>routes.php</tt> дистрибутива CakePHP (на 40 строке). Он&nbsp;применяется к&nbsp;любому URL, который начинается на&nbsp;<tt>/pages/</tt>. Роут переадресует CakePHP к&nbsp;действию <tt>display()</tt> контроллера <tt>PagesController()</tt>. Напимер, запрос <tt>/pages/products</tt> будет отправлен к&nbsp;<tt>PagesController-&gt;display('products')</tt>.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> Router::connect(<br />&nbsp;&nbsp;&nbsp;&nbsp;'/government',<br />&nbsp;&nbsp;&nbsp;&nbsp;array('controller'&nbsp;=&gt;&nbsp;'products',&nbsp;'action'&nbsp;=&gt;&nbsp;'display',&nbsp;5)<br />);</span> </code></div><!--/notypo--><br /> Это&nbsp;второй пример, который показывает как&nbsp;вы&nbsp;можете использовать второй параметр при&nbsp;определении роута для&nbsp;задания значений по&nbsp;умолчанию. Если вы&nbsp;создаете сайт, который предлагает продукты для&nbsp;разных категорий покупателей, то&nbsp;можете создать удобный роут. Вместо длинной и&nbsp;непонятной ссылки <tt>/products/display/5</tt> пользователи будут использовать <tt>/government</tt>.<br /> Для&nbsp;дополнительной гибкости вы&nbsp;можете определить собственные элементы роута. Таким образом можно указать какие элементы в&nbsp;URL могут быть неверными. Когда запрос выполняется, то&nbsp;значения для&nbsp;элементов пользовательских роутов расположены в&nbsp;переменной контроллера <tt>$this-&gt;params</tt>.<br /> <span class="mark">Ту би&nbsp;континед</span></div></div> 2007-12-22 22:03:14 /wiki/Manual/Developing/Configuration/show?time=2007-12-22+22%3A03%3A14 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2007-12-22+22%3A03%3A14">2007-12-22 22:03:14</a> и <a href="/wiki/Manual/Developing/Configuration?time=2008-01-17+14%3A15%3A00">2008-01-17 14:15:00</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><br /> URL&nbsp;<tt>/posts/view</tt> будет переадресован к&nbsp;методу <tt>view()</tt> контроллера <tt>PostsController</tt>, URL&nbsp;<tt>/products/viewClearance</tt> &mdash; к&nbsp;методу <tt>view_clearance()</tt> контроллера <tt>ProductsController</tt>. Если в&nbsp;URL действие не&nbsp;объявлено, то&nbsp;переадресация идет к&nbsp;методу <tt>index()</tt>.</div><br /> <b>Удалено:</b><br /> <div class="deletions"><br /> URL&nbsp;<tt>/posts/view</tt> будет переадресован к&nbsp;методу <tt>view()</tt> контроллера <tt>PostsController</tt>, URL&nbsp;<tt>/products/viewClearance</tt> &mdash; к&nbsp;методу <tt>view_clearance()</tt> контроллера <tt>ProductsController</tt>. Если в&nbsp;URL дейтвие не&nbsp;объявлено, то&nbsp;переадресация идет к&nbsp;методу <tt>index()</tt>.</div></div> 2007-12-15 14:07:49 /wiki/Manual/Developing/Configuration/show?time=2007-12-15+14%3A07%3A49 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2007-12-15+14%3A07%3A49">2007-12-15 14:07:49</a> и <a href="/wiki/Manual/Developing/Configuration?time=2007-12-22+22%3A03%3A14">2007-12-22 22:03:14</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Для&nbsp;дополнительной гибкости вы&nbsp;можете определить собственные элементы роута. Таким образом можно указать какие элементы в&nbsp;URL могут быть неверными. Когда запрос выполняется, то&nbsp;значения для&nbsp;элементов пользовательских роутов расположены в&nbsp;переменной контроллера <tt>$this-&gt;params</tt>.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Для&nbsp;дополнительной гибкости вы&nbsp;можете определить собственные элементы роута.</div></div> 2007-12-15 13:32:45 /wiki/Manual/Developing/Configuration/show?time=2007-12-15+13%3A32%3A45 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2007-12-15+13%3A32%3A45">2007-12-15 13:32:45</a> и <a href="/wiki/Manual/Developing/Configuration?time=2007-12-15+14%3A07%3A49">2007-12-15 14:07:49</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><!--notypo--><div class="code"><code><span style="color: #000000"> http://example.com/controller/action/param1/param2/param3</span> </code></div><!--/notypo--><div style="float:center; text-align:center">URL-шаблон роутов по&nbsp;умолчанию</div><br /> URL&nbsp;<tt>/posts/view</tt> будет переадресован к&nbsp;методу <tt>view()</tt> контроллера <tt>PostsController</tt>, URL&nbsp;<tt>/products/viewClearance</tt> &mdash; к&nbsp;методу <tt>view_clearance()</tt> контроллера <tt>ProductsController</tt>. Если в&nbsp;URL дейтвие не&nbsp;объявлено, то&nbsp;переадресация идет к&nbsp;методу <tt>index()</tt>.<br /> Первый параметр сообщает маршрутизатору какие URL&nbsp;вы&nbsp;хотите контролировать. URL&nbsp;должен представлять из&nbsp;себя обычную строку адреса, разделенную слешами, так&nbsp;же&nbsp;может содержать место подстановки (обозначено звездочкой (*)) или&nbsp;произвольный элемент роута (часть URL&nbsp;с&nbsp;двоеточием вначале). Использование символа подстановки сообщает роутам какие части адреса вы&nbsp;хотите разбирать, а&nbsp;использование произвольных элементов (тех, что&nbsp;с&nbsp;двоеточием) показывает какие части вы&nbsp;хотите передавать в&nbsp;действия контроллера.<br /> После того, как&nbsp;вы&nbsp;указали адрес, вы&nbsp;используете два&nbsp;последних параметра <tt>connect()</tt>, чтобы указать элементы, которые необходимо искать в&nbsp;адресе, если он&nbsp;совпал. Второй параметр представляет из&nbsp;себя ассоциативный массив. Ключами в&nbsp;этом массиве являются элементы определенные вами в&nbsp;адресе (те, что&nbsp;двоеточием вначале) или&nbsp;стандартные элементы роутов: <tt>:controller</tt>, <tt>:action</tt>, and&nbsp;<tt>:plugin</tt>. Значениями будут значения определенные вами по&nbsp;умолчанию для&nbsp;этих элементов. Давайте посмотрим на&nbsp;некоторые примеры, чтобы все&nbsp;стало ясно, перед тем&nbsp;как начнем использовать третий параметр <tt>connect()</tt>.<br /> <div class="indent">'/pages/*',<br /> array('controller' =&gt; 'pages', 'action' =&gt; 'display')</div> );<br /> Этот роут уже&nbsp;написан в&nbsp;файле <tt>routes.php</tt> дистрибутива CakePHP (на 40 строке). Он&nbsp;применяется к&nbsp;любому URL, который начинается на&nbsp;<tt>/pages/</tt>. Роут переадресует CakePHP к&nbsp;действию <tt>display()</tt> контроллера <tt>PagesController()</tt>. Напимер, запрос <tt>/pages/products</tt> будет отправлен к&nbsp;<tt>PagesController-&gt;display('products')</tt>.<br /> <div class="indent"><div class="indent">'/government',<br /> array('controller' =&gt; 'products', 'action' =&gt; 'display', 5)</div></div> );<br /> Это&nbsp;второй пример, который показывает как&nbsp;вы&nbsp;можете использовать второй параметр при&nbsp;определении роута для&nbsp;задания значений по&nbsp;умолчанию. Если вы&nbsp;создаете сайт, который предлагает продукты для&nbsp;разных категорий покупателей, то&nbsp;можете создать удобный роут. Вместо длинной и&nbsp;непонятной ссылки <tt>/products/display/5</tt> пользователи будут использовать <tt>/government</tt>.<br /> Для&nbsp;дополнительной гибкости вы&nbsp;можете определить собственные элементы роута.</div><br /> <b>Удалено:</b><br /> <div class="deletions"><!--notypo--><textarea class="code" rows="2" readonly="readonly">http://example.com/controller/action/param1/param2/param3</textarea><!--/notypo--><div style="float:center; text-align:center">URL-шаблон роутов по&nbsp;умолчанию</div><br /> URL&nbsp;<tt>/posts/view</tt> будет переадресован к&nbsp;методу <tt>view()</tt> контроллера <tt><span class="missingpage">Posts&nbsp;Controller</span><a href="/wiki/PostsController/edit?add=1" title="Создать эту страницу">?</a></tt>, URL&nbsp;<tt>/products/viewClearance</tt> &mdash; к&nbsp;методу <tt>view_clearance()</tt> контроллера <tt>ProductsController</tt>. Если в&nbsp;URL дейтвие не&nbsp;объявлено, то&nbsp;переадресация идет к&nbsp;методу <tt>index()</tt>.</div></div> 2007-12-15 01:59:41 /wiki/Manual/Developing/Configuration/show?time=2007-12-15+01%3A59%3A41 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Configuration" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Configuration</a> за <a href="/wiki/Manual/Developing/Configuration?time=2007-12-15+01%3A59%3A41">2007-12-15 01:59:41</a> и <a href="/wiki/Manual/Developing/Configuration?time=2007-12-15+13%3A32%3A45">2007-12-15 13:32:45</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h85-1"></a><h2>Настройка роутов (маршрутизаций)</h2> Роуты &mdash; это&nbsp;функционал, который сопоставляет набранный URL-адрес с&nbsp;действием контроллера. Роуты были добавлены в&nbsp;CakePHP, чтобы сделать адреса более настраиваемыми и&nbsp;гибкими. Если вы&nbsp;используете Apache и&nbsp;mod_rewrite, то&nbsp;роуты можно и&nbsp;не использовать, но&nbsp;все же&nbsp;их использование позволит куда большую гибкость, чем&nbsp;при стандартных средствах.<br /> В&nbsp;CakePHP 1.2 функциональность роутов была сильно расширена.<br /> Прежде чем&nbsp;создавать свои роуты, вы&nbsp;должны узнать какие в&nbsp;CakePHP есть роуты по&nbsp;умолчанию. Изначально CakePHP будет понимать &laquo;красивые&raquo; адреса в&nbsp;любом приложении. Для&nbsp;того чтобы вызвать какое-то действие &mdash; достаточно просто указать в&nbsp;адресе его&nbsp;имя. Именно таким же&nbsp;образом можно передать параметры в&nbsp;это действие.<br /> <!--notypo--><textarea class="code" rows="2" readonly="readonly">http://example.com/controller/action/param1/param2/param3</textarea><!--/notypo--><div style="float:center; text-align:center">URL-шаблон роутов по&nbsp;умолчанию</div><br /> URL&nbsp;<tt>/posts/view</tt> будет переадресован к&nbsp;методу <tt>view()</tt> контроллера <tt><span class="missingpage">Posts&nbsp;Controller</span><a href="/wiki/PostsController/edit?add=1" title="Создать эту страницу">?</a></tt>, URL&nbsp;<tt>/products/viewClearance</tt> &mdash; к&nbsp;методу <tt>view_clearance()</tt> контроллера <tt>ProductsController</tt>. Если в&nbsp;URL дейтвие не&nbsp;объявлено, то&nbsp;переадресация идет к&nbsp;методу <tt>index()</tt>.<br /> Стандартная маршрутизация также позволяет в&nbsp;URL передавать параметры в&nbsp;действия. Например URL&nbsp;<tt>/posts/view/25</tt> будет означать вызов функции <tt>view(25)</tt> класса <tt>PostsController</tt>.<br /> В&nbsp;CakePHP 1.2 появилась возможность называть параметры. Можно дать параметру имя&nbsp;и&nbsp;отправить его&nbsp;значение при&nbsp;помощи URL. Запрос на&nbsp;адрес <tt>/posts/view/title:first+post/category:general</tt> приведет к&nbsp;обращению к&nbsp;действию <tt>view()</tt> контроллера <tt>PostsController</tt>. Внутри действия вы&nbsp;можете обратиться к&nbsp;переданным параметрам, как&nbsp;к&nbsp;<tt>$this-&gt;passedArgs['title']</tt> и&nbsp;<tt>$this-&gt;passedArgs['category']</tt>.<br /> Некоторое резюме роутов по&nbsp;умолчанию, которые могут быть вам&nbsp;полезны:<br /> URL: /monkeys/jump<br /> Переадресация: <span class="missingpage">Monkeys&nbsp;Controller</span><a href="/wiki/MonkeysController/edit?add=1" title="Создать эту страницу">?</a>-&gt;jump();<br /> URL: /products<br /> Переадресация: <span class="missingpage">Products&nbsp;Controller</span><a href="/wiki/ProductsController/edit?add=1" title="Создать эту страницу">?</a>-&gt;index();<br /> URL: /tasks/view/45<br /> Переадресация: <span class="missingpage">Tasks&nbsp;Controller</span><a href="/wiki/TasksController/edit?add=1" title="Создать эту страницу">?</a>-&gt;view(45);<br /> URL: /donations/view/recent/2001<br /> Переадресация: <span class="missingpage">Donations&nbsp;Controller</span><a href="/wiki/DonationsController/edit?add=1" title="Создать эту страницу">?</a>-&gt;view('recent', '2001');<br /> URL: /contents/view/chapter:models/section:associations<br /> Переадресация: <span class="missingpage">Contents&nbsp;Controller</span><a href="/wiki/ContentsController/edit?add=1" title="Создать эту страницу">?</a>-&gt;view();<br /> $this-&gt;passedArgs['chapter'] = 'models';<br /> $this-&gt;passedArgs['section'] = 'associations';<br /> <!--notypo--><textarea class="code" rows="2" readonly="readonly"></textarea><!--/notypo-->(wacko wrapper=text wrapper_align=center)Примеры использования стандартных роутов<!--notypo--><textarea class="code" rows="8" readonly="readonly"></textarea><!--/notypo--><div style="float:center; text-align:center">Шаблон определения роутов</div><br /> <span class="mark">Ту би&nbsp;континед</span></div><br /> <b>Удалено:</b><br /> <div class="deletions"><span class="mark">И о&nbsp;чем мы&nbsp;с вами только не&nbsp;поговорим... Вот&nbsp;будем о&nbsp;роутах говорить на&nbsp;днях. Интересно? Заглядывайте чаще. ;-)</span></div></div>