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

Скаффолдинг


Скаффолдинг (scaffolding) – это технология, позволяющая разработчикам определять и разрабатывать базовые приложения, способные создавать, получать, изменять и удалять объекты. Кроме того, скаффолдинг в CakePHP позволяет разработчикам определять, как объекты связаны между собой, а также создавать и разрывать такие связи.


Все, что вам необходимо для создания скаффолдинга – это модель и её контроллер. Определив в файле контроллера переменную $scaffold, вы будете готовы к работе.


Скаффолдинг CakePHP очень хорош. Он позволяет в считанные минуты создать базовое CRUD-приложение. Он настолько хорош, что вам захочется использовать его при создании приложений. Сейчас мы тоже думаем, что это классно, но, пожалуйста, поймите, что скаффолдинг – это просто рабочая платформа. Это – шаткая структура, которая поможет на старте проекта действительно быстро с чего-то начать. Скаффолдинг не обладает полной гибкостью, это только временный путь, чтобы подняться и пойти. Если вы находите необходимым изменить логику или отображения, самое время убрать скаффолдинг и начать писать код. Описанная в следующей главе, консоль Bake CakePHP – отличный шаг далее: она сгенерирует весь необходимый код, чтобы получить такой же результат, как и при использовании скаффолдинга.


Скаффолдинг – хороший путь на этапах проектирования веб-приложений. Схема БД на ранних этапах разработки является предметом изменений. У этого есть обратная сторона: веб-разработчик ненавидит создавать формы, реальной пользы которых никогда не увидит. Для уменьшения нагрузки на разработчика, в CakePHP был включен скаффолдинг. Механизм скаффолдинга анализирует ваши таблицы и создает стандартные списки, кнопки «добавить», «удалить» и «изменить», а также стандартные формы для редактирования, и отображение для просмотра отдельных элементов, хранящихся в БД.


Для добавления скаффолдинга, определите в контроллере переменную $scaffold:


<?php

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


Если вы уже создали базовый класс модели Category (в файле /app/models/category.php), то все готово. Посетите 'http://example.com/categories', чтобы увидеть ваш новый скаффолд.


Cоздание методов в контроллерах, использующих скаффолдинг, может привести к неожиданным результатам.
Например, если вы создадите метод index() в контроллере, использующем скаффолдинг, то 
будет отрендерн ваш метод index, а не функциональность скаффолдинга.


Скаффолдинг знает об ассоциациях моделей, поэтому если ваша модель Category belongsTo User, то вы увидите связанные ID пользователя в списке категорий. Если вы захотите увидеть что-либо кроме ID (например, имя пользователя), то вы можете определить в модели переменную $displayField.


Давайте определим переменную $displayField в нашем классе User, чтобы связанные с категориями пользователи отображались в скаффолдинге по имени, а не по ID.


<?php

class User extends AppModel {
    var 
$name 'User';
    var 
$displayField 'first_name';
}

?>


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


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


Изменение выполняется путем создания шаблонов.


Измененные отображения скаффолдинга для определенного контроллера 
(в данном примере - PostsController) должны быть размещены так:

/app/views/posts/scaffold.index.ctp
/app/views/posts/scaffold.show.ctp
/app/views/posts/scaffold.edit.ctp
/app/views/posts/scaffold.new.ctp

Измененные отображения скаффолдинга для всех контроллеров
должны быть размещены так:

/app/views/scaffolds/index.ctp
/app/views/scaffolds/show.ctp
/app/views/scaffolds/edit.ctp
/app/views/scaffolds/new.ctp
/app/views/scaffolds/add.ctp


<< Встроенные помощники | Консоль CakePHP >>


 
Комментарии
Добавить комментарий:

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

Стройные индивидуалки с сайта https://b.nbanapa.info скрасят ваш досуг.