Установка дополнительных библиотек через composer — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Установка дополнительных библиотек через composer

2017-07-24 266
Установка дополнительных библиотек через composer 0.00 из 5.00 0 оценок
Заказать работу

В процессе разработки приложения были установлены следующие библиотеки, путём добавление информации о них в конфигурационный файл composer.json:

· friendsofsymfony/user-bundle - добавляет поддержку системы пользователей с поддержкой базы данных в Symfony. Он обеспечивает гибкую структуру для управления пользователями, которая направлена на решение общих задач, таких как регистрация пользователей с подтверждением, сброс пароля, хранения и управление пользователями с помощью Doctrine [22].

· gregwar/image-bundle - предоставляет управление изображениями и API для Symfony и Twig.

· league/color-extractor – извлекает цвета из изображений и сортирует их по частоте использования.

· sonata-project/admin-bundle – добавляет возможности для генерации и управления административной панелью [24].

· sonata-project/doctrine-orm-admin-bundle – интегрирует sonata-project/admin-bundle с ORM Doctrine.

Для установки всех используемых библиотек использовалась команда «composer install», а для установки fronted-зависимостей sonata-project/admin-bundle команды «bower install./vendor/sonata-project/admin-bundle/bower.json» и «php bin/console assets:install web/assets».

Вёрстка шаблона, npm, webpack

В качестве менеджера frontend-зависимостей был использован npm. В файле package.json (см. приложение A) был сформирован список библиотек, используемых при вёрстке шаблона. В качестве css-фреймворка выбран «material design light», предоставляющий основные компоненты вёрстки элементов в стиле material design, а также реализующий её адаптивность. Возможность использовать такие возможности, как написание стилей на языке less, использование синтаксиса ECMAScript 6 (классы в JavaScript, импорт / экспорт модулей и т. д.) реализуют библиотеки npm под названием babel, less-loader, file-loader, webpack, css-loader.

Для осуществления жёсткого разграничения между frontend и backend, а также для преобразования less в css и приведения js-файлов к поддерживаемому устаревшими браузерами виду, был использован сборщик frontend webpack, а также организована файловая структура, которая отделяет все файлы стилей, изображения и скрипты от основного backend-функционала приложения. Webpack был установлен через менеджер зависимостей npm и сконфигурирован с учётом доступных библиотек и модулей.

В процессе вёрстки шаблона была использована методология БЭМ (Блок, Элемент, Модификатор), которая позволяет создавать расширяемые и повторно используемые компоненты интерфейса [24]. Все файлы стилей, скрипты, изображения, шрифты хранятся в папке assets/src/ директории проекта.

├───blocks/ -содержит отдельные повторно используемые блоки

│ ├───basket/ -содержит js-код и стили для виджета корзины

│ │ ├───basket.js

│ │ └───basket.less

│ ├───feedback/ -содержит js-код и стили для виджета обратной связи

│ │ ├───feedback.js

│ │ └───feedback.less

│ └───... – содержит блоки для других виджетов на сайте

├───img/ - содержит изображения

│ ├───icons/

│ │ ├───...

│ └───logo.png

├───modules/ -содержит скрипты и стили, используемые во всём сайте или в различных блоках

│ └───...

├───admin_common.js – точка входа для страниц административной панели

├───basket.js – точка входа для страницы корзины

├───catalog.js – точка входа для страницы каталога товаров

├───common.js – точка входа, общая для всех публичных страниц

└───... – точки входа для других страниц

Листинг 18. Структура каталога файлов frontend

Таким образом, для каждого маршрута средствами webpack при загрузки страницы подключаются четыре файла – общие файлы css и js, а также используемые только в этом маршруте css и js, определяемые точкой входа. Сгенерированные файлы располагаются в директории web/assets/build/ и исключены из версионного контроля.

В директории src/Difuks/DazzleBundle/Resources/views/ содержатся шаблоны twig – базовые шаблоны публичной части сайта, административной панели, email-сообщения; шаблоны компонентов административной панели, вижетов, страниц публичной части и различные почтовые шаблоны.

Генерация сущностей и форм

База данных была спроектирована таким образом, чтобы отобразить различные типы связей (один ко многим, многие к одному, многие ко многим), использовать различные типы данных, правила валидации и разнообразные возможности ORM Doctrine.

Для реализации поставленной задачи был создан набор сущностей. Все поля и их типы указаны на рисунке 7. Для каждого свойства (за исключением ID) созданы методы для получения и изменения значения (геттеры и сеттеры). Связи между сущностями реализованы с помощью объектно-реляционной модели PostgreSQL, их типы так же указаны на рисунке 7. В некоторых сущностях используется свойство «code», являющееся уникальным, и валидируемое по регулярному выражению – оно должно содержать только символы латиницы, символы «-, _» и цифры. Это поле используется для формирования человекопонятных url.

· Key – ключи игр для добавления в корзину. Содержит вспомогательный метод для получения статуса ключа на основе связанной корзины.

· Game – игры. Содержит вспомогательные методы для получения списка не купленных ключей, обновления рейтинга на основе добавленного отзыва, получения рейтинга в целочисленном формате, получения цены с учётом скидки, определения добавлена ли игра в «избранное» для конкретного пользователя, получения количества отзывов.

· News – новости сайта.

· User – пользователи.

· Genre – жанры игр.

· Image – изображения, используемые в сущностях Game (логотип, скриншоты), News, Genre, Settings.

Рис. 7. Схема реализуемой базы данных

· Basket – корзина пользователя. Содержит вспомогательные методы для получения текущей стоимости корзины с учётом скидок, фактической стоимости после покупки игр с учётом скидок и без, получения количества игр в корзине, добавления и изменения количества игр и ключей в связанной сущности BasketProduct, получения количества конкретной игры, удаления ключей из корзине по определённой игре.

· Review – отзывы об игре.

· Discount – скидки.

· Feedback – обратная связь.

· Settings – настройки сайта.

· Developer – разработчики игр.

· Publisher – издатели игр.

· NewsReview – отзывы о новостях.

· SiteReview – отзывы о сайте.

· Subscribes – подписки на новости сайта.

· BasketProduct – товары корзины (игра и её количество). Содержит вспомогательный метод для определения стоимости с учётом скидки

В приложении B представлена сущность Game в виде класса Doctrine. Генерация сущностей осуществлялась с помощью консольной команды Symfony, а также доработана вручную с учётом реализации необходимых связей, методов и правил валидации.

Помимо самих сущностей были созданы три репозитория, упрощающие процесс выполнения специфичных запросов данных:

· GameRepository – содержит методы для получения общего количества игр в базе данных, максимальной цены, минимальной цены с учётом скидок, минимального и максимального допустимого возраста, игр со скидкой, а также метод для выборки игр по фильтру. Данный репозиторий представлен в приложении C.

· BasketRepository – содержит методы для получения корзины по текущему пользователю, и выборки «старых» корзин.

· BasketProductRepository – содержит метод, переопределяющий базовый метод findAll, с целью изменения направления сортировки (по возрастанию ID).

На основе некоторых сущностей были созданы классы для генерации пользовательских форм, а именно: форма обратной связи (представлена вместе с сущностью Feedback в приложении D), форма изменения данных пользователя и форма регистрации.


Поделиться с друзьями:

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.