CakePHP - Manual/BasicPrinciples/Conventions /wiki/Manual/BasicPrinciples/Conventions History/revisions of CakePHP/Manual/BasicPrinciples/Conventions en-us 2008-03-31 10:22:38 /wiki/Manual/BasicPrinciples/Conventions/show?time=2008-03-31+10%3A22%3A38 <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.basicprinciples.conventions" href="/wiki/Manual/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-03-31+10%3A22%3A38">2008-03-31 10:22:38</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions">2009-03-26 13:28:33</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><span class="missingpage">&lt;&lt; Стандартный запрос CakePHP</span><a href="/wiki/TypicalRequest/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Разработка с&nbsp;CakePHP &gt;&gt;</span><a href="/wiki/Developing/edit?add=1" title="Создать эту страницу">?</a></div></div> 2008-03-22 02:21:23 /wiki/Manual/BasicPrinciples/Conventions/show?time=2008-03-22+02%3A21%3A23 <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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-03-22+02%3A21%3A23">2008-03-22 02:21:23</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-03-31+10%3A22%3A38">2008-03-31 10:22:38</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Таблицы объединений, использующиеся при&nbsp;схеме связи <tt>hasAndBelongsToMany</tt>, должны называться именами объединяемых таблиц во&nbsp;множественном числе через знак подчеркивания. Названия двух таблиц в&nbsp;составе новой должны следовать в&nbsp;алфавитном порядке (не <tt>zebras_apples</tt>, но&nbsp;<tt>apples_zebras</tt>). Например, таблица для&nbsp;объединения записей (модель <tt>Post</tt>) и&nbsp;тегов к&nbsp;ним (модель <tt>Tag</tt>) должна называться <tt>posts_tags</tt>.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Таблицы объединений, использующиеся при&nbsp;схеме связи <tt>hasAndBelongsToMany</tt> должны называться именами объединяемых таблиц во&nbsp;множественном числе через знак подчеркивания. Названия двух таблиц в&nbsp;составе новой должны следовать в&nbsp;алфавитном порядке (не <tt>zebras_apples</tt>, но&nbsp;<tt>apples_zebras</tt>). Например, таблица для&nbsp;объединения записей (модель <tt>Post</tt>) и&nbsp;тегов к&nbsp;ним (модель <tt>Tag</tt>) должна называться <tt>posts_tags</tt>.</div></div> 2008-01-17 13:17:12 /wiki/Manual/BasicPrinciples/Conventions/show?time=2008-01-17+13%3A17%3A12 <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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-01-17+13%3A17%3A12">2008-01-17 13:17:12</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-03-22+02%3A21%3A23">2008-03-22 02:21:23</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Мы&nbsp;большие поклонники соглашений. Вы&nbsp;потратите немного времени на&nbsp;изучение соглашений, зато в&nbsp;будущем вы&nbsp;не будете терять его&nbsp;перечитывая конфигурационные файлы. Следуя соглашениям, вы&nbsp;получите полную функциональность, которую может предоставить Cake. Если над&nbsp;проектом работают несколько разработчиков, то&nbsp;соглашения помогут им&nbsp;быстро понять, о&nbsp;чем идеть речь в&nbsp;исходных файлах.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Мы&nbsp;большие поклонники соглашений. Вы&nbsp;потратите немного времени на&nbsp;изучение соглашений, зато в&nbsp;будущем вы&nbsp;не будете терять его&nbsp;перечитывая конфигурационные файлы. Следуя соглашениям, вы&nbsp;получите полную функциональность, которую может предоставить Cake. Если над&nbsp;проектом работаю несколько разработчиков, то&nbsp;соглашения помогут им&nbsp;быстро понять о&nbsp;чем идеть речь в&nbsp;исходных файлах.</div></div> 2008-01-17 13:08:32 /wiki/Manual/BasicPrinciples/Conventions/show?time=2008-01-17+13%3A08%3A32 <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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-01-17+13%3A08%3A32">2008-01-17 13:08:32</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-01-17+13%3A17%3A12">2008-01-17 13:17:12</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Таблицы объединений, использующиеся при&nbsp;схеме связи <tt>hasAndBelongsToMany</tt> должны называться именами объединяемых таблиц во&nbsp;множественном числе через знак подчеркивания. Названия двух таблиц в&nbsp;составе новой должны следовать в&nbsp;алфавитном порядке (не <tt>zebras_apples</tt>, но&nbsp;<tt>apples_zebras</tt>). Например, таблица для&nbsp;объединения записей (модель <tt>Post</tt>) и&nbsp;тегов к&nbsp;ним (модель <tt>Tag</tt>) должна называться <tt>posts_tags</tt>.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Таблицы объединений, использующиеся при&nbsp;схеме связи <tt>hasAndBelongsToMany</tt> должны называться именами объединяемых таблиц во&nbsp;множественном числе через знак подчеркивания. Названия двух таблиц в&nbsp;составе новой должны следовать в&nbsp;алфавитном порядке (не <tt>zebras_apples</tt>, но&nbsp;<tt>apples_zebras</tt>). Например, таблица для&nbsp;обединения записей (модель <tt>Post</tt>) и&nbsp;текгов к&nbsp;ним (модель <tt>Tag</tt>) должна называться <tt>posts_tags</tt>.</div></div> 2007-12-07 00:40:49 /wiki/Manual/BasicPrinciples/Conventions/show?time=2007-12-07+00%3A40%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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-07+00%3A40%3A49">2007-12-07 00:40:49</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2008-01-17+13%3A08%3A32">2008-01-17 13:08:32</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Таблицы объединений, использующиеся при&nbsp;схеме связи <tt>hasAndBelongsToMany</tt> должны называться именами объединяемых таблиц во&nbsp;множественном числе через знак подчеркивания. Названия двух таблиц в&nbsp;составе новой должны следовать в&nbsp;алфавитном порядке (не <tt>zebras_apples</tt>, но&nbsp;<tt>apples_zebras</tt>). Например, таблица для&nbsp;обединения записей (модель <tt>Post</tt>) и&nbsp;текгов к&nbsp;ним (модель <tt>Tag</tt>) должна называться <tt>posts_tags</tt>.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Таблицы объединений, использующиеся при&nbsp;схеме связи <tt>hasAndBelongsToMany</tt> должны называться именями объединяемых таблиц во&nbsp;множественном числе через знак подчеркивания. Названия двух таблиц в&nbsp;составе новой должны следовать в&nbsp;алфавитном порядке (не <tt>zebras_apples</tt>, но&nbsp;<tt>apples_zebras</tt>). Например, таблица для&nbsp;обединения записей (модель <tt>Post</tt>) и&nbsp;текгов к&nbsp;ним (модель <tt>Tag</tt>) должна называться <tt>posts_tags</tt>.</div></div> 2007-12-07 00:38:23 /wiki/Manual/BasicPrinciples/Conventions/show?time=2007-12-07+00%3A38%3A23 <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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-07+00%3A38%3A23">2007-12-07 00:38:23</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-07+00%3A40%3A49">2007-12-07 00:40:49</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><span class="cite">Сейчас, когда вы&nbsp;познакомились с&nbsp;основами, можно отвлечься и&nbsp;пройти по&nbsp;главе &laquo;Создаем Блог&raquo;, расположенной в&nbsp;конце руководства.</span></div><br /> <b>Удалено:</b><br /> <div class="deletions"><span class="cite">Сейчас, когда вы&nbsp;познакомились с&nbsp;основами, можно отвлечься и&nbsp;пройти по&nbsp;главе &laquo;Руководство: создаем Блог на&nbsp;CakePHP&quot;, расположенной в&nbsp;конце руководства.</span></div></div> 2007-12-07 00:27:41 /wiki/Manual/BasicPrinciples/Conventions/show?time=2007-12-07+00%3A27%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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-07+00%3A27%3A41">2007-12-07 00:27:41</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-07+00%3A38%3A23">2007-12-07 00:38:23</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Названия классов Контроллеров имеют множественное число и&nbsp;слово &#147;Controller&#148; на&nbsp;конце. Если название состоит более чем&nbsp;из&nbsp;одного слова, то&nbsp;пробел не&nbsp;ставится и&nbsp;каждое следующее слово названия пишется с&nbsp;заглавной буквы. <tt>PeopleController</tt>, <tt>BigPeopleController</tt> и&nbsp;<tt>ReallyBigPeopleController</tt> &mdash; вот&nbsp;обычные имена контроллеров.<br /> Первая функция в&nbsp;классе Контроллера, которую вы&nbsp;обычно определяете называется <tt>index()</tt>. Если был&nbsp;вызван Контроллер, но&nbsp;в запросе не&nbsp;было указано действие, то&nbsp;вызывается <tt>index()</tt>. Например если вы&nbsp;запрашиваете <tt><a href="http://www.example.com/apples/" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/apples/</a></tt>, то&nbsp;вызывается Контроллер <tt>ApplesController</tt> и&nbsp;дейтвие <tt>index()</tt>, если же&nbsp;действие было определено (<tt><a href="http://www.example.com/apples/view" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/apples/view</a></tt>), то&nbsp;вызовется контроллер (<tt>ApplesController</tt>) и&nbsp;определенное запросом действие (<tt>view()</tt>).<br /> <ul><li> Класс контроллера: &laquo;PeopleController&quot;, расположен в&nbsp;<tt>/app/controllers/people_controller.php</tt></li></ul> При&nbsp;использовании этих соглашений CakePHP знает, что&nbsp;при запросе адреса <tt><a href="http://example.com/people/" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://example.com/people/</a></tt> необходимо вызвать функцию <tt>index()</tt> Контроллера <tt>PeopleController</tt>, где&nbsp;уже автоматически доступна модель <tt>Person</tt> (с подключенной таблицей <tt>people</tt> из&nbsp;базы данных) и&nbsp;создать нужное отображение. Ни&nbsp;одна из&nbsp;этих связей не&nbsp;была настроена какими-нибудь конфигурационными файлами, кроме как&nbsp;простым созданием файлов и&nbsp;классов, которые вам&nbsp;пришлось бы&nbsp;объявить в&nbsp;любом случае.<br /> <span class="cite">Сейчас, когда вы&nbsp;познакомились с&nbsp;основами, можно отвлечься и&nbsp;пройти по&nbsp;главе &laquo;Руководство: создаем Блог на&nbsp;CakePHP&quot;, расположенной в&nbsp;конце руководства.</span></div><br /> <b>Удалено:</b><br /> <div class="deletions">Названия классов Контроллеров имеют множественное число и&nbsp;слово &#147;Controller&#148; на&nbsp;конце. Если название состоит более чем&nbsp;из&nbsp;одного слова, то&nbsp;пробел не&nbsp;ставится и&nbsp;каждое следующее слово названия пишется с&nbsp;заглавной буквы. <tt><span class="missingpage">People&nbsp;Controller</span><a href="/wiki/PeopleController/edit?add=1" title="Создать эту страницу">?</a></tt>, <tt><span class="missingpage">Big&nbsp;People&nbsp;Controller</span><a href="/wiki/BigPeopleController/edit?add=1" title="Создать эту страницу">?</a></tt> и&nbsp;<tt><span class="missingpage">Really&nbsp;Big&nbsp;People&nbsp;Controller</span><a href="/wiki/ReallyBigPeopleController/edit?add=1" title="Создать эту страницу">?</a></tt> &mdash; вот&nbsp;обычные имена контроллеров.<br /> Первая функция в&nbsp;классе Контроллера, которую вы&nbsp;обычно определяете называется <tt>index()</tt>. Если был&nbsp;вызван Контроллер, но&nbsp;в запросе не&nbsp;было указано действие, то&nbsp;вызывается <tt>index()</tt>. Например если вы&nbsp;запрашиваете <tt><a href="http://www.example.com/apples/" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/apples/</a></tt>, то&nbsp;вызывается Контроллер <tt><span class="missingpage">Apples&nbsp;Controller</span><a href="/wiki/ApplesController/edit?add=1" title="Создать эту страницу">?</a></tt> и&nbsp;дейтвие <tt>index()</tt>, если же&nbsp;действие было определено (<tt><a href="http://www.example.com/apples/view" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/apples/view</a></tt>), то&nbsp;вызовется контроллер (<tt><span class="missingpage">Apples&nbsp;Controller</span><a href="/wiki/ApplesController/edit?add=1" title="Создать эту страницу">?</a></tt>) и&nbsp;определенное запросом действие (<tt>view()</tt>).<br /> <ul><li> Класс контроллера: "<span class="missingpage">People&nbsp;Controller</span><a href="/wiki/PeopleController/edit?add=1" title="Создать эту страницу">?</a>", расположен в&nbsp;<tt>/app/controllers/people_controller.php</tt></li></ul></div></div> 2007-12-04 00:03:11 /wiki/Manual/BasicPrinciples/Conventions/show?time=2007-12-04+00%3A03%3A11 <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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-04+00%3A03%3A11">2007-12-04 00:03:11</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-07+00%3A27%3A41">2007-12-07 00:27:41</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h77-1"></a><h2>Соглашение о&nbsp;Контроллерах</h2> Названия классов Контроллеров имеют множественное число и&nbsp;слово &#147;Controller&#148; на&nbsp;конце. Если название состоит более чем&nbsp;из&nbsp;одного слова, то&nbsp;пробел не&nbsp;ставится и&nbsp;каждое следующее слово названия пишется с&nbsp;заглавной буквы. <tt><span class="missingpage">People&nbsp;Controller</span><a href="/wiki/PeopleController/edit?add=1" title="Создать эту страницу">?</a></tt>, <tt><span class="missingpage">Big&nbsp;People&nbsp;Controller</span><a href="/wiki/BigPeopleController/edit?add=1" title="Создать эту страницу">?</a></tt> и&nbsp;<tt><span class="missingpage">Really&nbsp;Big&nbsp;People&nbsp;Controller</span><a href="/wiki/ReallyBigPeopleController/edit?add=1" title="Создать эту страницу">?</a></tt> &mdash; вот&nbsp;обычные имена контроллеров.<br /> Первая функция в&nbsp;классе Контроллера, которую вы&nbsp;обычно определяете называется <tt>index()</tt>. Если был&nbsp;вызван Контроллер, но&nbsp;в запросе не&nbsp;было указано действие, то&nbsp;вызывается <tt>index()</tt>. Например если вы&nbsp;запрашиваете <tt><a href="http://www.example.com/apples/" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/apples/</a></tt>, то&nbsp;вызывается Контроллер <tt><span class="missingpage">Apples&nbsp;Controller</span><a href="/wiki/ApplesController/edit?add=1" title="Создать эту страницу">?</a></tt> и&nbsp;дейтвие <tt>index()</tt>, если же&nbsp;действие было определено (<tt><a href="http://www.example.com/apples/view" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/apples/view</a></tt>), то&nbsp;вызовется контроллер (<tt><span class="missingpage">Apples&nbsp;Controller</span><a href="/wiki/ApplesController/edit?add=1" title="Создать эту страницу">?</a></tt>) и&nbsp;определенное запросом действие (<tt>view()</tt>).<br /> Вы&nbsp;можете изменить видимость фунции Контроллера, добавив знак подчеркивания в&nbsp;ее начало. В&nbsp;этом случае функцию будет невозможно запустить из&nbsp;браузера, но&nbsp;она останется для&nbsp;внутреннего пользования.<a name="h77-2"></a><h2>Соглашение об&nbsp;Отображениях</h2> Шаблоны Отображения именуются так&nbsp;же&nbsp;как функции внутри класса Контроллера. Например, если в&nbsp;классе Контроллера <tt><span class="missingpage">People&nbsp;Controller</span><a href="/wiki/PeopleController/edit?add=1" title="Создать эту страницу">?</a></tt> объявлена функция <tt>getReady()</tt>, то&nbsp;<span class="missingpage">Cake&nbsp;PHP</span><a href="/wiki/CakePHP/edit?add=1" title="Создать эту страницу">?</a> будет искать шаблон этого Отображения по&nbsp;адресу <tt>/app/views/people/get_ready.ctp</tt>.<br /> Вот&nbsp;шаблон местоположения шаблона: <tt>/app/views/&lt;Контроллер&gt;/&lt;имя_функции_через_подчеркивание&gt;.ctp</tt>.<br /> Называя ваши файлы, классы и&nbsp;функции по&nbsp;стандартам Cake, вы&nbsp;получаете максимальную функциональность без&nbsp;постоянного изменения файлов конфигурации. Посмотрите на&nbsp;последний пример в&nbsp;главе о&nbsp;соглашениях:<br /> <ul><li> Таблица базы данных: &#147;people&#148; </li><li> Класс модели: &#147;Person&#148;, расположен в&nbsp;<tt>/app/models/person.php</tt> </li><li> Класс контроллера: "<span class="missingpage">People&nbsp;Controller</span><a href="/wiki/PeopleController/edit?add=1" title="Создать эту страницу">?</a>", расположен в&nbsp;<tt>/app/controllers/people_controller.php</tt> </li><li> Шаблон отображения расположен в&nbsp;<tt>/app/views/people/index.ctp</tt></li></ul></div><br /> <b>Удалено:</b><br /> <div class="deletions"><span class="mark">Продолжение следует</span></div></div> 2007-12-04 00:02:59 /wiki/Manual/BasicPrinciples/Conventions/show?time=2007-12-04+00%3A02%3A59 <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/BasicPrinciples/Conventions" class="">/Manual&nbsp;/&nbsp;Basic&nbsp;Principles&nbsp;/&nbsp;Conventions</a> за <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-04+00%3A02%3A59">2007-12-04 00:02:59</a> и <a href="/wiki/Manual/BasicPrinciples/Conventions?time=2007-12-04+00%3A03%3A11">2007-12-04 00:03:11</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><span class="mark">Продолжение следует</span></div><br /> <b>Удалено:</b><br /> <div class="deletions">?? Продолжение следует ??</div></div>