Мы иногда видим сайты с обратным отсчетом, проект стартует через … Его сделать достаточно просто, и не займет много времени. Мы воспользуемся проектом fdevs/coming-soon, который основан на Symfony2. Также будем сохранять введеный пользователями адреса электронной почтой в базу данных MongoDB. У нас есть настроенное рабочее окружение Osx, о настройке можно прочитать в статье Yosemite настройка рабочего окружения. Но главное версия php не меньше 5.4. В проекте можно также использовать реляционную базу данных типа MySQL. По умолчанию в проекте вообще не используется база данных, а введеный email отправляется на почту.
Установка и настройка
Создадим проект с помощью composer и переходим в папку с проектом:
$ composer create-project fdevs/coming-soon coming $ cd coming
Для нашего приложения настроим разрешения для папок.
$ rm -rf var/cache/* $ rm -rf var/logs/* $ rm -rf var/spool/* $ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1` $ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs var/spool $ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs var/spool
Добавим наш проект в nginx $ vim /usr/local/etc/nginx/sites/coming.conf
server { server_name coming.local; error_log /usr/local/var/log/nginx/coming.error.log; access_log /usr/local/var/log/nginx/coming.access.log; root /Users/andrey/Sites/coming/web; include templates/symfony.conf; }
Также добавим проект в $ sudo vim /etc/hosts
в конец допишем новую строку
127.0.0.1 coming.local
перегрузим веб сервер $ sudo nginx -s reload
Для отправления почты добавим в планировки задач(cron) задачу $ bin/console swiftmailer:spool:send
Запускаем команду $ bin/console assets:install
для обновления css и js.
На данный момент получаем рабочий проект с обратным отсчетом и подпиской, отправляемой email на указанный адрес электронной почты при установке.
Сохранение email адресов в MongoDB
Устанавливаем Doctrine MongoDB в проект с помощью composer:
$ composer require doctrine/mongodb-odm $ composer require doctrine/mongodb-odm-bundle
Добавляем конфигурацию для базы
#app/config/config.yml doctrine_mongodb: connections: default: server: "%default_server%" options: {} default_database: "%default_database%" document_managers: default: auto_mapping: true
Также в файлы app/config/parameters.yml
и app/config/parameters.yml.dist
ваши настройки для базы, в моем примере они будут
parameters: #... default_database: coming default_server: ‘mongodb://localhost:27017'
Добавить в app/config/parameters.yml.dist
необходимо для того чтобы при обновлении проекта ваши настройки не затерлись.
Добавим bundles в проект app/AppKernel.php
<?php use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; class AppKernel extends Kernel { public function registerBundles() { $bundles = array( //... new Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle(), ); } }
Обновляем файл app/config/config.yml
f_devs_contact_us: #.... database: db_driver: ‘mongodb'
В данном случае мы получаем рабочий проект с сохранением адресов электронной почты в MongoDB и отправлением их на адрес электронной почты. Если мы хотим видеть сохраненные адреса на сайте, необходимо добавить Админ интерфейс.
Добавление административного интерфейса
Устанавливаем Sonata Admin, мы будем ее использовать для просмотра введенных адресов.
$ composer require sonata-project/admin-bundle $ composer require sonata-project/doctrine-mongodb-admin-bundle
Добавляем в app/AppKernel.php
public function registerBundles() { $bundles = array( //... new Sonata\CoreBundle\SonataCoreBundle(), new Sonata\BlockBundle\SonataBlockBundle(), new Knp\Bundle\MenuBundle\KnpMenuBundle(), new Sonata\AdminBundle\SonataAdminBundle(), new Sonata\DoctrineMongoDBAdminBundle\SonataDoctrineMongoDBAdminBundle(), ); }
Добавляем config app/config/config.yml
sonata_block: default_contexts: [cms] blocks: sonata.admin.block.admin_list: contexts: [admin] sonata_admin: security: acl_user_manager: fos_user.user_manager title: 4devs company dashboard: groups: label.contactUs: label_catalogue: FDevsContactUsBundle items: - f_devs_contact_us.admin.contact_us
Добавляем routes app/config/routing.yml
admin: resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml' prefix: /admin _sonata_admin: resource: . type: sonata_admin prefix: /admin
Обновляем настройки
#app/config/config.yml f_devs_contact_us: database: admin_service: ‘sonata'
Теперь можно посмотреть email по адресу coming.local/admin
Добавление контактов
Для добавления контактов используется ContactListBundle. Все контакты находятся в файле src/AppBundle/Contact/Social.php
, например для того чтобы добавить адрес корпоративного сайта:
public function social(FactoryInterface $factory, array $options = []) { //…. $factory->addConnect($contact, 'home', ‘4devs company', 'http://4devs.org/'); //…. }
Заключение
Данный проект очень легко развернуть, он не требует какое-то специальное рабочее окружение. Все настройки, дизайн и текст находятся в src/AppBundle
. Такой проект нужен не часто, в основном перед стартом вашего основного проекта. Настройка не займет много времени, достаточно просто заменить название проекта и его описание. Описание проекта и название не должно быть очень длинным, или вам прийдется учитывать размеры разных экранов(устройств).