Symfony 2 Joboard : Маршрутизация

Если вы обратите внимание на URL домашней страницы Joboard, то в адресной строке вы увидите: /job/1/show. Наверняка, вы привыкли видеть адреса в формате /job.php?id=1. Так как же Symfony определяет какое действие необходимо выполнить исходя из заданного адреса? Почему переменная $id находится там, где должно указываться действие, а не параметр? Попробуем разобраться.

Читать далее...

Работаем с тегами в Symfony 2

  • PHP
  • 3 года назад

Определённые сервисы ядра Symfony 2 зависят от тегов, по которым определяют: какие сервисы должны быть загружены, быть оповещены о наступлении события либо применены по другому назначению. Например, Twig использует twig.extension для загрузки расширений.

Но теги можно использовать и по своему назначению в собственных бандлах. К примеру, ваш сервис работает с какой-либо коллекцией данных или реализовывает “цепочку” действий, которые выполняются последовательно до наступления положительного результата. В этой статье я приведу пример “транспортной цепочки” - коллекция классов реализующих \Swift_Transport. Используя такую цепочку, Swift mailer (служба отправки электронных писем в Symfony2) использует несколько способов отправки писем, до тех пор пока письмо не будет отправлено. В данной статье уделено основное внимание внедрению зависимостей в проект.

Читать далее...

Symfony 2 Joboard : Контроллёр и Представление

Сегодня мы собираемся настроить контроллер для вакансий, который мы создали в прошлой части. Он уже содержит большую часть кода, которая необходима для Joboard:

  • Страница со списком всех вакансий
  • Страница для создания новой вакансии
  • Страница для редактирования вакансии
  • Возможность удаления вакансии

Хотя текущий код уже готов к использованию, мы всё же переделаем шаблоны, чтобы они больше соответствовали макетам Joboard.

Читать далее...

Symfony 2 Joboard : Модель данных

Первым делом мы определим модель данных для Joboard, а для взаимодействия с базой данных будем использовать ORM и в конце этой статьи у вас будет создан первый модуль приложения. Но так как Symfony делает много работы за нас, то этот полностью функциональный веб-модуль мы создадим без написания большого количество кода на PHP.

Читать далее...

Symfony 2 Joboard : Спецификация проекта

Прежде чем углубляться в код с головой, опишем более подробно, как будет работать проект. В следующих разделах описаны функции, которые мы будем реализовывать в первой версии/итерации проекта с некоторыми простыми историями.

Веб-сайт Joboard будет иметь четыре типа пользователей: Администратор (владеет и управляет веб-сайтом), пользователь (посетитель веб-сайта, ищет работу), работодатель (посетитель веб-сайта и размещает вакансии) и партнёр (имеет доступ к списку вакансий и публикует их на своем веб-сайте).

Читать далее...

Symfony 2 Joboard : Начинаем проект

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

В этой части, вы не будете писать код. Вместо этого вы будете настраивать рабочую среду разработки.

Прежде всего вам нужно проверить, что ваш компьютер имеет соотвествующее программное обеспечение для веб-разработки. В качестве операционной системы мы будем использовать Ubuntu 12. Из ПО как минимум нам потребуется веб-сервер Apache, СУБД MySQL и PHP 5.3.3 или более поздней версии. Для Windows рекомендую установить XAMPP или OpenServer, там есть все библиотеки и уже настроено окружение для разработчика. Также вместо сервера Apache вы можете использовать встроенный сервер в php 5.4 и выше, как это сделать буде тпоказано ниже.

Читать далее...

Использование строки в качестве Twig шаблона в Symfony2

  • PHP
  • 3 года назад

Я переключил свой предпочтительный метод на использование класса Twig_Loader_Chain. Этот метод позволяет назначить несколько загрузчиков в один экземпляр Twig_Environment, так что вы сможете прозрачно обрабатывать шаблоны из файлов или из строк. В нижней части статьи вы увидите описание этого метода.

Для того, чтобы создать twig шаблон требуется экземпляр класса Twig_Environment. Этот класс содержит метод render, который возвращает обработанный результат из twig шаблона (обычно из файла). Twig Environment использует загрузчик классов, который реализует интерфейс Twig_LoaderInterface, этот класс загружает данные из хранилища (файл, база данных) для последующего их анализа шаблонизатором. По умолчанию Symfony2 использует класс Twig_Loader_Filesystem, который загружает данные шаблонов из файлов, для того чтобы создать шаблон из строки нам нужен экземпляр Twig_Environment, который для получения данных, использует класс Twig_Loader_String. Есть несколько способов, как вы можете это сделать, самый простой способ - это создать экземпляр Twig_Environment и и в качестве загрузчика передать ему экземпляр класса Twig_Loader_String (этот код можно поместить внутри вашего контроллера):

Читать далее...

Тестирование Symfony 2 приложений с помощью codeception

  • PHP
  • 3 года назад

Какие преимущества вы получаете, используя Codeception с Symfony2? Давайте перечислим все из них:

  • удобный синтаксис для функциональных тестов
  • доступ к контейнеру в юнит-тестах
  • тестирования REST и SOAP сервисов, созданных с помощью Symfony
  • быстрая очистка данных при использовании Doctrine2

Установка очень проста. Вы можете использовать Composer (как вы обычно это делаете), но мы рекомендуем попробовать phar package. В этом случае вы можете избежать ненужных зависимостей. Но оба варианта равнозначны. Чтобы установить codeception через composer необходимо добавить в composer.json следующий код, а затем обновить:

Читать далее...