Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual11/Scaffolding ...

Скаффолдинг


Оглавление документа

Что такое Скаффолдинг


Скаффолдинг — это та часть проекта, которую вы просто ненавидите. Просто великолепно, если вы решили его использовать при написании приложения. Скаффолдинг не гибок. Он лишь выполняет самые стандартные операции. Если вы хотите что-то изменить в сгенерированных страницах — значит скаффолдинг пора отбросить.


Скаффолдинг это отличный способ создать каркас веб-приложения чтобы на его основе наращивать функциональность. Начальные схемы базы данных, разумеется подлежат изменениям, но идеально подходят для начала процесса создания приложения. Веб-разработчик ненавидит создавать формы, реальной пользы которых никогда не увидит. Скаффолдинг как раз для того и нужен, чтобы избавить разработчика от рутины. Скаффолдинг анализирует таблицы вашей базы данных и создает стандартные формы с кнопками «добавить», «удалить» и «изменить», а также стандартные отображения для того, чтобы осмотреть отдельные элементы в базе данных. Чтобы добавить скаффолдинг в ваше приложение, в контроллере добавьте переменную $scaffold:

<?php
class CategoriesController extends AppController {
  var 
$scaffold;
}
?>


Очень важно знать следующее: скаффолдинг понимает, что любое поле в таблице заканчивающееся на _id – это сторонний ключ таблицы, имя которого написано перед символом подчеркивания. Вот, к примеру, если у вас есть вложенные категории, вы скорее всего создали колонку с именем parent_id. Но лучше назвать эту колонку parentid. Также, когда у вас есть сторонний ключ в вашей таблице (например, в таблице названий есть колонка category_id), и вы связали ее с соответствующей таблицей, в которой указаны эти самые названия, в скаффолдинге для этой таблицы в select box будут автоматически добавлены все категории в отображении show/edit/new. Чтобы установить которое поле из сторонней таблицы показывается, поставьте переменную $displayField в стороннюю модель. Продолжая наш пример о категориях названий:

<?php
class Title extends AppModel {
  var 
$name 'Title';
  var 
$displayField 'title';
}
?>

Настройка отображений скаффолдинга

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


Если вы хотите изменить отображения скаффолдинга, вам придется разобраться самостоятельно.

Настройка отображений для отдельного контроллера

Настраиваемые отображения скаффолдинга для PostsController должны быть размещены так:
/app/views/posts/scaffold/index.scaffold.thtml
/app/views/posts/scaffold/show.scaffold.thtml
/app/views/posts/scaffold/edit.scaffold.thtml
/app/views/posts/scaffold/new.scaffold.thtml

Настройка отображений скаффолдинга для целого приложения

Должны быть размещены так:
/app/views/scaffold/index.scaffold.thtml
/app/views/scaffold/show.scaffold.thtml
/app/views/scaffold/edit.scaffold.thtml
/app/views/scaffold/new.scaffold.thtml


Если внезапно вы осознаете что вам хочется изменить код контроллера на этой стадии, то это самое время истребить скаффолдинг из вашего приложения и создать формы самостоятельно.
Одна возможность вам можете показаться полезной, это генератор кода Cake: Bake. Bake позволяет вам генерировать код скаффолдинга, который вы потом можете отредактировать под свои нужды и поместить в свое приложение.


 
Комментарии

Но лучше назвать эту колонку parentid.
Но если всё же желается не избавлятся от знака “_", то почему бы не назвать id_parent?!

78.30.206.3 (2008-09-10 22:34:55)

Потому что так сделано в Ruby-on-Rails, потому что так сделано в Akelos, потому что так сделано в десятке других фреймворков, и просто потому что это хорошая практика.

n116h243.catv.ext.ru (2008-09-24 04:05:52)
Добавить комментарий:

Файлов нет. [Показать файлы/форму]