Разработка на Symfony2 » sonata admin bundle https://symfonydev.ru Разработка на Symfony2: Doctrine file upload , CMS, Sonata Admin Bundle Fri, 07 Feb 2014 13:33:43 +0000 ru-RU hourly 1 http://wordpress.org/?v=3.4.1 Разработка сайта на Symfony 2 и Twitter Bootstrap https://symfonydev.ru/symfony-2-twitter-bootstrap/ https://symfonydev.ru/symfony-2-twitter-bootstrap/#comments Thu, 13 Dec 2012 14:37:53 +0000 vitiko https://symfonydev.ru/?p=188 Фреймворк Symfony 2 хорош тем, что на нем можно быстро разрабатывать произвольные веб-приложения. Doctrine ORM позволяет быстро создать модель данных, затем нужно создать контроллеры и шаблоны на базе шаблонизатора Twig. Однако, если помимо какого то специфического функционала требуется достаточно стандартная … Читать далее

Запись Разработка сайта на Symfony 2 и Twitter Bootstrap впервые появилась Разработка на Symfony2.

]]>
Фреймворк Symfony 2 хорош тем, что на нем можно быстро разрабатывать произвольные веб-приложения. Doctrine ORM позволяет быстро создать модель данных, затем нужно создать контроллеры и шаблоны на базе шаблонизатора Twig. Однако, если помимо какого то специфического функционала требуется достаточно стандартная публикация материалов на сайте и организация сайта в древовидную структуру, при этом зачастую, по крайней мере на начальном этапе, внешнее оформления сайта не имеет значения, требуются дополнительные затраты времени на разработку. В статье рассмотрен пример создания сайта с базовыми возможностями публикации материалов.

Популярные бандлы помогают решить стандартные задачи:

Для решения задачи публикации материалов предлагаются бандлы:

  • IphpCoreBondle — организация сайта в древовидную структуру
  • IphpContentBondle — публикация материалов в разделах сайта

В качестве примера рассмотрим создания сайта с использованием этих бандлов

Внимание! Скачать получившийся проект можно тут https://github.com/vitiko/IphpSandbox

Установка Symfony 2 standart edition

Для начала установим стандартный проект Symfony 2. Для установки требуется файл composer.phar, который можно взять с сайта getcomposer.org). Нужно выполнить команду (используется последняя на момент написания стабильная версия Symfony 2.1.5):

php composer.phar create-project symfony/framework-standard-edition /path/to/site/ 2.1.5

DocumentRoot директорию веб-сервера соответственно нужно настроить на путь /path/to/site/web/. Послу установки стандартного проекта при запросе http://localhost/app_dev.php (где http://localhost — адрес вашего веб-сервера) должна выдаваться базовая начальная страница дистрибутива Symfony 2.

Настройка соединения с БД

Настройки соединения с БД можно настроить либо правкой файла app/config/parameters.yml, либо через веб-конфигуратор, входящий в стандартный дистрибутив Symfony 2 http://localhost/app_dev.php/_configurator. Затем нужно создать БД с указанным именем.

Установка IphpCoreBundle и IphpContentBundle

Загрузка кода

Для загрузки бандлов нужно добавить в composer.json дополнительную строку в раздел require, также нужно добавить строку Application в раздел autoload — этот путь будет использоваться копиями стандартных бандлов. Для загрузки бандлов, от которых зависит iphp/content-bundle также нужно добавить строку «minimum-stability»: «dev»

// composer.json
{
    "autoload":{
        "psr-0":{
            "":"src/",
            "Application":"app/"
        }
    },
 
    ...
 
    "require": {
 
        ...
        "iphp/content-bundle": "@stable"
    }
 
 
}

Бандл IphpContentBundle зависит от IphpCoreBundle и IphpFileStoreBundle, соответственно эти бандлы будут загружены автоматически. Затем нужно выполнить команду

$ php composer.phar update iphp/content-bundle

Инициализация бандлов

Composer загрузит код бандлов в директорию vendor/iphp. Затем нужно добавить все загруженные бандлы в app/AppKernel.php. Для упрощения в составе IphpCoreBundle есть своя версия AppKernel, в которую уже включены все требуемые бандлы. Т.е. файл app/AppKernel.php нужно заменить на

<?php
use Iphp\CoreBundle\Kernel\AppKernel as IphpKernel;
use Symfony\Component\Config\Loader\LoaderInterface;
 
class AppKernel extends IphpKernel
{
    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__ . '/config/config_' . $this->getEnvironment() . '.yml');
    }
 
}

Конфигурация

В файл app/config/config.yml нужно добавить включение конфигурационных файлов установленных бандлов. Стандартный файл конфигурации security.yml можно заменить на файл @IphpCoreBundle/Resources/config/config.yml, в котором уже прописаны настройки для FosUserBundle и параметры доступа к административному интерфейсу SonataAdminBundle

imports:
   ...
    - { resource: "@IphpCoreBundle/Resources/config/security.yml" }
    - { resource: "@IphpCoreBundle/Resources/config/config.yml" }
    - { resource: "@IphpContentBundle/Resources/config/config.yml" }

Роутинг

В файл app/config/routing.yml нужно добавить

_main:
    resource: "@IphpCoreBundle/Resources/config/routing.yml"
 
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

Т.к. демострационый бандл AcmeDemoBundle из стандартного дистрибутива для сайта не нужен — нужно удалить из файла app/config/routing_dev.yml маршруты, использующие контроллеры из этого бандла.

Генерация файлов бандлов для кастомизации

Проекты с использованием Iphp используют схему расширения стандартной функциональности базовых бандлов, которую предлагает SonataEasyExtendsBundle — специальной командой в директории app проекта создается поддиректория app/Application, в которой создаются заготовки (файлы сущностей, конфигурация Doctrine и т.п.) для бандла, расширяющего базовый бандл. Для нашего случая нужно выполнить команды:

php app/console sonata:easy-extends:generate IphpCoreBundle
php app/console sonata:easy-extends:generate IphpContentBundle
php app/console sonata:easy-extends:generate SonataUserBundle

Которые создадут соответствующие файловые структуры в app/Application/Iphp/CoreBundle, app/Application/Iphp/ContentBundle и app/Application/Sonata/UserBundle.

Генерация таблиц БД

Для генерации таблиц БД, соответствующих сущностям, описанным в установленных бандлах (параметры доступа к БД уже должны быть настроены и БД создана) , нужно выполнить команду:

 php app/console cache:clear
 php app/console doctrine:schema:update --force
 php app/console iphp:core:createrootrubric

Команда iphp:core:createrootrubric создает запись о корневой рубрике сайта в соответствующей таблице

Использование базового шаблона Twitter Bootstrap

Базовая схема наследования шаблонов Symfony 2 предполагает использование шаблона «::base.html.twig» (файл base.html.twig находится в директории app/Resources/views). Для применения в качестве базового файла в поставке IphpCoreBundle находится шаблон, использующий Twitter Bootstrap. Соответственно нужно модифицировать файл app/Resources/views/base.html.twig чтобы он содержал:

{% extends 'IphpCoreBundle::bootstrap-layout.html.twig' %}

Создание пользователя — администратора

Доступ к административному интерфейсу возможен только авторизованному пользователю с правами администратора. Чтобы его создать нужно выполнить команду:

php app/console fos:user:create admin --super-admin

Затем ввести e-mail и пароль этого пользователя.

Теперь можно зайти в административный интерфейс http://localhost/app_dev.php/admin/dashboard чтобы создать структуру сайта. Чтобы SonataAdminBundle и FosUserBundle пользовались русскими переводами своих терминов — в parameters.yml нужно указать locale:ru, а в файле config.yml раскомментировать строку

translator:      { fallback: %locale% }

(по умолчанию в Symfony Standart она закомментирована ). Если транслятор включен, вы увидите такую страницу:

Создание структуры сайта

В разделе «Рубрики» редактируется структура сайта. Для начала нужно зайти на страницу редактирования корневой рубрики, и переименовать ее согласно тому как называется сайт, например, «Symfony2 & Twitter Bootstrap». Также нужно выбрать модуль, который находится в рубрике («Индекс сайта»), также можно ввести описание рубрики.

Затем занесем несколько рубрик, например, «Новости», «Статьи», «О проекте» в которых будут размещаться материалы сайта. Для этого нужно выбрать пункт «Добавить новый» в списке рубрик сайта. Модуль в рубрике нужно выбрать «Материалы — список»

Положение рубрик в дереве можно менять, для этого нужно только перетащить соответствующую рубрику или ветку. После формирования списка рубрик первая страница выглядит так:

Мы получили заготовку сайта с современным оформлением, использующим фреймворк Twitter Bootstrap, с пользовательской системой, реализованной на базе FOSUserBundle, административным интерфейсом на основе SonataAdminBundle и широкими возможностями разработки нового функционала и кастомизации, которые предоставляет фреймворк Symfony 2 и огромное количество бандлов, разрабатываемых сообществом разработчиков Symfony 2.

Скачать получившийся проект можно тут https://github.com/vitiko/IphpSandbox

Запись Разработка сайта на Symfony 2 и Twitter Bootstrap впервые появилась Разработка на Symfony2.

]]>
https://symfonydev.ru/symfony-2-twitter-bootstrap/feed/ 15