
Якщо ви вже почали вивчати консольні команди Symfony, тоді цей блог написано саме для вас. Юрій Петрик з команди девелоперів Symfony2 поділився цією статтею для новеньких "симфоністів". Кожен хто зацікавлений у вивченні Symfony2, з радістю буде поглиблювати свої знання, тому детальніше про Symfony2, читайте також і на цьому сайті.
У Symfony існує дуже багато консольних команд, які допоможуть вам у роботі. У цій статті розглянемо найбільш часто використовувані команди Symfony. Наприклад, команда для очищення кешу:
$ php app/console cache:clear
Майже кожна консольна команда має необов’язкові або обов’язкові параметри або властивості. Наприклад, та ж сама команда для очищення кешу може мати такі опції:
$ php app/console cache:clear --env=dev $ php app/console cache:clear --env=prod
Опціями --env=dev і --env=prod ми вказуємо, в якому середовищі ми очищуємо кеш. Symfony має наступні опції для кожної консольної команди:
Для виведення списку усіх команд нам потрібно ввести наступну команду: php app/console list або простоphp app/console.
Symfony console doctrine
Інтеграція Doctrine2 ORM для роботи з БД пропонує кілька консольних команд під простором імен doctrine. Для перегляду списку команд ви можете використовувати команду списку:
$ php app/console list doctrin
Ви можете знайти більш детальну інформацію про будь-яку з цих команд, виконавши команду довідки. Розглянемо більш детально деякі з найчастіше використовуваних команд:
Приклад даної команди:
$ php app/console doctrine:generate:entity --entity=AcmeUserBundle:User
$ php app/console doctrine:generate:entity --entity=AcmeBlogBundle:Post --format=yml --fields="title:string(255) body:text" --with-repository
$ php app/console doctrine:generate:entities <name> [--path=...] [--no-backup] ⎯ створить класи entities і їх методи за вашими конфігураціями. Параметр <name> є обов’язковим, тут ми вказуємо повне ім'я entities або bundle. Приклади:
$ php app/console doctrine:generate:entities MyCustomBundle
$ php app/console doctrine:generate:entities MyCustomBundle:User
$ php app/console doctrine:generate:entities MyCustomBundle/Entity/User
$ php app/console doctrine:generate:form <entity> ⎯ згенерує форму для вашого <entity>. Приклад:
$ php app/console doctrine:generate:form MyCustomBundle:Entity
$ php app/console doctrine:generate:crud [--entity=...] [--route-prefix=...] [--with-write] [--format=...] ⎼ створить CRUD на основі Doctrine entity, тобто генерує контролер для даної entity з місцезнаходженням у вказаному bundle. Цей контролер дозволяє виконувати п'ять основних операцій на entity:
Приклад:
$ php app/console doctrine:generate:crud --entity=AcmeBlogBundle:Post --route-prefix=post --format=annotation
$ php app/console doctrine:schema:create — створює таблиці за вашими конфігураціями;
$ php app/console doctrine:schema:update --force — оновлює схему БД;
Symfony console doctrine migration
$ php app/console doctrine:migrations:diff — створює міграції шляхом порівняння між поточною БД та конфігураціями entities;
$ php app/console doctrine:migrations:execute <version> [--up] [--down] — вказану міграцію <version>вносить у БД --up або видаляє з БД --down;
$ php app/console doctrine:migrations:generate — створює порожній клас міграції;
$ php app/console doctrine:migrations:latest — виводить номер останньої версії;
$ php app/console doctrine:migrations:migrate — виконує міграцію до зазначеної версії або останньої доступної версії;
$ php app/console doctrine:migrations:status — показує список міграцій.
Рекомендація: Для роботи з БД краще використовувати migrations замість schema-tool. Коли ви використовуєте schema-tool, історія змін бази даних не зберігається, а для production/staging середовища це великий недолік. Крім того, міграції дають вашій команді знати, коли прийшов час, щоб оновити свої схеми. Якщо ви використовуєте лише schema-tool, ваші товариші по команді повинні кожен раз виконуватиdoctrine:schema:update --force, коли вони підтягують зміни, тому що вони не будуть знати, якщо схема дійсно змінилася. При використанні міграції ви завжди бачите, що є деякі оновлення в папці міграції, які означають, що ви повинні оновити вашу схему. І якщо після виконання міграції ви зрозуміли, що зробили помилку в конфігураціях entity або її поля, ви запросто можете відмінити зміни, виконавши командуdoctrine:migrations:execute <version> [--down]. Але міграції у Symfony не встановлені за замовчуванням із коробки, для цього потрібно додатково встановити DoctrineMigrationsBundle за допомогою команди
$ composer require doctrine/doctrine-migrations-bundle "^1.0"
Інші консольні команди
$ php app/console generate:bundle [--namespace="..."] [--dir="..."] [--bundle-name="..."] [--format="..."] [--structure] — генерує новий bundle. За замовчуванням, команда взаємодіє з розробником, щоб налаштувати генерацію. Приклад:
$ php app/console generate:bundle --namespace=Acme/BlogBundle --dir=src --format=annotation
$ php app/console generate:controller [--controller="..."] [--route-format="..."] [--template-format="..."] [--actions="..."] — команда дозволяє створити новий контролер всередині bundle;
--controller="..." — ми вказуємо ім’я bundle, у якому створюємо контролер та ім’я самого контролера;
--route-format="..." — формат конфігурацій маршрутизації (yml, xml, php, annotation, за замовчуванням — annotation);
--actions="..." — створює actions в контролері (дозволяються різні значення);
--template-format="..." — формат, що використовується для створення шаблонів (twig, php, за замовчуванням — twig).
Приклад:
$ php app/console generate:controller --controller=AcmeBlogBundle:Post
$ php app/console router:debug — виводить список усіх маршрутів додатку;
$ php app/console assetic:dump — фізично записує всі файли CSS, JavaScript, зображення, що необхідні для вашого Dev середовища. Великим недоліком є необхідність запуску щоразу при оновленні веб-ресурсів. На щастя, за допомогою команди php app/console assetic:watch файли будуть оновлені автоматично, якщо вони змінюються;
$ php app/console assets:install — використовується для встановлення веб-ресурсів (CSS, JavaScript, зображення). При виконанні без параметрів команда копіює в web/ всі файли, знайдені в директоріяхResources/public/ вашого додатку.
Також ви можете прочитати цю та інші статті тyт. Заходьте, читайте, і дізнавайтеся багато чого нового та цікавого!