Консоль Symfony2: посібник для початківців

06/10/2015 0 symfony, шаблон Twig, конфігурація

Якщо ви вже почали вивчати консольні команди 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 має наступні опції для кожної консольної команди:

  • --help (-h) — виводить повідомлення довідки;
  • --quiet (-q) — не виводить жодного повідомлення;
  • --verbose (-v|vv|vvv) — підвищує детальність повідомлень: 1 — звичайне виведення, 2 — більш детальне виведення і 3 — налагодження;
  • --version (-V) — виводить версію додатку;
  • --ansi — вмикає ANSI;
  • --no-ansi — вимикає ANSI;
  • --shell (-s) — запускає оболонку;
  • --process-isolation — запускає команди з оболонки як окремий процес;
  • --env=[...] (-e=[...]) — вказує назву середовища dev або prod (за замовчуванням — "dev");
  • --no-debug — вимикає режим налагодження. 

Для виведення списку усіх команд нам потрібно ввести наступну команду: php app/console list або простоphp app/console.

Symfony console doctrine

Інтеграція Doctrine2 ORM для роботи з БД пропонує кілька консольних команд під простором імен doctrine. Для перегляду списку команд ви можете використовувати команду списку:

$ php app/console list doctrin

Ви можете знайти більш детальну інформацію про будь-яку з цих команд, виконавши команду довідки. Розглянемо більш детально деякі з найчастіше використовуваних команд:

  • $ php app/console doctrine:database:create [--connection=...] ⎯ створить БД, яка записана у ваших конфігураціях;
  • $ php app/console doctrine:database:drop [--connection=...] [--force] ⎯ видалить БД;
  • $ php app/console doctrine:generate:entity [--entity=...] [--fields=...] [--format=...] [--with-repository] ⎯ створить новий об'єкт Doctrine всередині вашого bundle. Дана команда має наступні додаткові опції:
  1. --entity ⎯ вказує ім'я класу entity;
    --fields ⎯ вказує конфігурації для нових полів;
    --format ⎯ вказує формат для файлу конфігурації (php, xml, yml або annotation, за замовчуванням ⎯ "annotation");
    --with-repository ⎯ генерує репозиторій для даної entity.

Приклад даної команди:

$ 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:

  1. 1. Виведення списку всіх записів;
  2. 2. Показ одного запису по його первинному ключу;
  3. 3. Створення нового запису;
  4. 4. Редагування існуючого запису;
  5. 5. Видалення існуючого запису.

Приклад:

$ 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т. Заходьте, читайте, і дізнавайтеся багато чого нового та цікавого!

Поділитися