CakePHP - Manual/Developing/Scaffolding /wiki/Manual/Developing/Scaffolding History/revisions of CakePHP/Manual/Developing/Scaffolding en-us 2009-03-17 13:21:18 /wiki/Manual/Developing/Scaffolding/show?time=2009-03-17+13%3A21%3A18 <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.scaffolding" href="/wiki/Manual/Developing/Scaffolding" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Scaffolding</a> за <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+13%3A21%3A18">2009-03-17 13:21:18</a> и <a href="/wiki/Manual/Developing/Scaffolding">2009-03-17 13:21:58</a></b><br /> <br /> No differences.</div> 2009-03-17 12:45:21 /wiki/Manual/Developing/Scaffolding/show?time=2009-03-17+12%3A45%3A21 <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/Scaffolding" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Scaffolding</a> за <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+12%3A45%3A21">2009-03-17 12:45:21</a> и <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+13%3A21%3A18">2009-03-17 13:21:18</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h810-1"></a><h1> Изменение отображений скаффолдинга </h1> Если вы&nbsp;захотите немного изменить отображениях скаффолдинга, то&nbsp;вы можете создать шаблоны. Мы&nbsp;не рекомендуем использовать данную технику в&nbsp;производственных приложениях, но&nbsp;такие изменения могут быть полезными при&nbsp;создании прототипа.<br /> Изменение выполняется путем создания шаблонов.<br /> Измененные отображения скаффолдинга для&nbsp;определенного контроллера <br /> (в данном примере &ndash; <span class="missingpage">Posts&nbsp;Controller</span><a href="/wiki/PostsController/edit?add=1" title="Создать эту страницу">?</a>) должны быть размещены так:<br /> /app/views/posts/scaffold.index.ctp<br /> /app/views/posts/scaffold.show.ctp<br /> /app/views/posts/scaffold.edit.ctp<br /> /app/views/posts/scaffold.new.ctp<br /> Измененные отображения скаффолдинга для&nbsp;всех контроллеров<br /> должны быть размещены так:<br /> /app/views/scaffolds/index.ctp<br /> /app/views/scaffolds/show.ctp<br /> /app/views/scaffolds/edit.ctp<br /> /app/views/scaffolds/new.ctp<br /> /app/views/scaffolds/add.ctp</div></div> 2009-03-17 12:40:26 /wiki/Manual/Developing/Scaffolding/show?time=2009-03-17+12%3A40%3A26 <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/Scaffolding" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Scaffolding</a> за <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+12%3A40%3A26">2009-03-17 12:40:26</a> и <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+12%3A45%3A21">2009-03-17 12:45:21</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Если вы&nbsp;уже создали базовый класс модели Category (в файле /app/models/category.php), то&nbsp;все готово. Посетите '<a href="http://example.com/categories'" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://example.com/categories'</a>, чтобы увидеть ваш&nbsp;новый скаффолд.<br /> Cоздание методов в&nbsp;контроллерах, использующих скаффолдинг, может привести к&nbsp;неожиданным результатам.<br /> <span class="missingpage">&lt;&lt; Встроенные помощники</span><a href="/wiki/Helpers/CoreHelpers/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Консоль CakePHP &gt;&gt;</span><a href="/wiki/Console/edit?add=1" title="Создать эту страницу">?</a></div><br /> <b>Удалено:</b><br /> <div class="deletions">Если вы&nbsp;уже создали базовый класс модели Category (в файле /app/models/category.php), то&nbsp;все готово. Посетите <a href="http://example.com/categories" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://example.com/categories</a> чтобы увидеть ваш&nbsp;новый скаффолд.<br /> Cоздание методов в&nbsp;контроллерах, использующих скаффолдинг, может привести к&nbsp;неожиданным результатам.</div></div> 2009-03-17 12:31:03 /wiki/Manual/Developing/Scaffolding/show?time=2009-03-17+12%3A31%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/Scaffolding" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Scaffolding</a> за <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+12%3A31%3A03">2009-03-17 12:31:03</a> и <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+12%3A40%3A26">2009-03-17 12:40:26</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Если вы&nbsp;уже создали базовый класс модели Category (в файле /app/models/category.php), то&nbsp;все готово. Посетите <a href="http://example.com/categories" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://example.com/categories</a> чтобы увидеть ваш&nbsp;новый скаффолд.<br /> Cоздание методов в&nbsp;контроллерах, использующих скаффолдинг, может привести к&nbsp;неожиданным результатам. <br /> Например, если вы&nbsp;создадите метод index() в&nbsp;контроллере, использующем скаффолдинг, то&nbsp;<br /> будет отрендерн ваш&nbsp;метод index, а&nbsp;не функциональность скаффолдинга.<br /> Скаффолдинг знает об&nbsp;ассоциациях моделей, поэтому если ваша модель Category belongsTo User, то&nbsp;вы увидите связанные ID&nbsp;пользователя в&nbsp;списке категорий. Если вы&nbsp;захотите увидеть что-либо кроме ID&nbsp;(например, имя&nbsp;пользователя), то&nbsp;вы можете определить в&nbsp;модели переменную $displayField.<br /> Давайте определим переменную $displayField в&nbsp;нашем классе User, чтобы связанные с&nbsp;категориями пользователи отображались в&nbsp;скаффолдинге по&nbsp;имени, а&nbsp;не по&nbsp;ID. <br /> class User extends <span class="missingpage">App&nbsp;Model</span><a href="/wiki/AppModel/edit?add=1" title="Создать эту страницу">?</a> {<br /> <div class="indent"><div class="indent">var $name = 'User';<br /> var $displayField = 'first_name';</div></div></div></div> 2009-02-12 20:25:57 /wiki/Manual/Developing/Scaffolding/show?time=2009-02-12+20%3A25%3A57 <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/Scaffolding" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Scaffolding</a> за <a href="/wiki/Manual/Developing/Scaffolding?time=2009-02-12+20%3A25%3A57">2009-02-12 20:25:57</a> и <a href="/wiki/Manual/Developing/Scaffolding?time=2009-03-17+12%3A31%3A03">2009-03-17 12:31:03</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><br /> Скаффолдинг (scaffolding) &ndash; это&nbsp;технология, позволяющая разработчикам определять и&nbsp;разрабатывать базовые приложения, способные создавать, получать, изменять и&nbsp;удалять объекты. Кроме того, скаффолдинг в&nbsp;<!--notypo-->CakePHP<!--/notypo--> позволяет разработчикам определять, как&nbsp;объекты связаны между собой, а&nbsp;также создавать и&nbsp;разрывать такие связи.<br /> <br /> Все, что&nbsp;вам необходимо для&nbsp;создания скаффолдинга &ndash; это&nbsp;модель и&nbsp;её контроллер. Определив в&nbsp;файле контроллера переменную $scaffold, вы&nbsp;будете готовы к&nbsp;работе.<br /> <br /> Скаффолдинг <!--notypo-->CakePHP<!--/notypo--> очень хорош. Он&nbsp;позволяет в&nbsp;считанные минуты создать базовое CRUD-приложение. Он&nbsp;настолько хорош, что&nbsp;вам захочется использовать его&nbsp;при создании приложений. Сейчас мы&nbsp;тоже думаем, что&nbsp;это классно, но, пожалуйста, поймите, что&nbsp;скаффолдинг &ndash; это&nbsp;просто рабочая платформа. Это&nbsp;&ndash; шаткая структура, которая поможет на&nbsp;старте проекта действительно быстро с&nbsp;чего-то начать. Скаффолдинг не&nbsp;обладает полной гибкостью, это&nbsp;только временный путь, чтобы подняться и&nbsp;пойти. Если вы&nbsp;находите необходимым изменить логику или&nbsp;отображения, самое время убрать скаффолдинг и&nbsp;начать писать код. Описанная в&nbsp;следующей главе, консоль Bake <!--notypo-->CakePHP<!--/notypo--> &ndash; отличный шаг&nbsp;далее: она&nbsp;сгенерирует весь необходимый код, чтобы получить такой же&nbsp;результат, как&nbsp;и&nbsp;при использовании скаффолдинга.<br /> <br /> Скаффолдинг &ndash; хороший путь на&nbsp;этапах проектирования веб-приложений. Схема БД&nbsp;на ранних этапах разработки является предметом изменений. У&nbsp;этого есть обратная сторона: веб-разработчик ненавидит создавать формы, реальной пользы которых никогда не&nbsp;увидит. Для&nbsp;уменьшения нагрузки на&nbsp;разработчика, в&nbsp;<!--notypo-->CakePHP<!--/notypo--> был&nbsp;включен скаффолдинг. Механизм скаффолдинга анализирует ваши таблицы и&nbsp;создает стандартные списки, кнопки &laquo;добавить&raquo;, &laquo;удалить&raquo; и&nbsp;&laquo;изменить&raquo;, а&nbsp;также стандартные формы для&nbsp;редактирования, и&nbsp;отображение для&nbsp;просмотра отдельных элементов, хранящихся в&nbsp;БД.<br /> Для&nbsp;добавления скаффолдинга, определите в&nbsp;контроллере переменную $scaffold:<br /> <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">CategoriesController&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">AppController&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$scaffold</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--></div></div>