Введение в Drush и Drupal Console

Перевод
Автор оригинала
Оригинал An Introduction to Drush and the Drupal Console
Введение в Drush и Drupal Console

Drush и Drupal Console - это утилиты с comand line интерфейсом, которые значительно ускоряют администрирование и разработку сайтов на Drupal. После установки у вас появится возможность выполнять определенные действия просто вводя команды в окне терминала, тогда как те же самый действия, например, в браузере, могут занять несколько шагов. Drupal Console работает только с Drupal 8, а Drush работает с Drupal 6, 7, 8. Если вы начинаете работать с Drupal 8 мне кажется что, вам нужно знать оба инструмента.

Сравнение Drush и Drupal Console.

Что можно делать с помощью этих инструментов? Краткий перечень ниже:

Возможности Drush Возможности Drupal Console
  • Скачать и установить Drupal;
  • Скачивать contrib модули;
  • Обновлять сам Drupal и contrib модули;
  • Запускать updatedb;
  • Чистить кэш;
  • Запускать CRON;
  • Запускать Drupal на легком веб-сервере;
  • Импортировать, экспортировать и merge'ить конфигурации;
  • Добавлять пользователей и устанавливать для них роли;
  • Добавлять права доступа для ролей;
  • Осуществлять резервное копирование и восстановление Drupal'а;
  • Копировать базу данных и файлы на удаленный сервер;
  • Компилировать twig шаблоны;
  •  Генерировать код для:
    - Консольных команд;
    - Типов содержимого;
    - Контроллеров;
    - Сущностей;
    - Form alter hook'ов;
    - Типов полей, виджетов полей и виджетов вывода;
    - Эффектов изображений;
    - Rest ресурсов;
    - Сервисов;
    - Тем;
  • Переключать сайт в режим обслуживания и обратно;
  • Запуск unit тестов;

Надеюсь, что я вас заинтересовал, и вы готовы приступить к работе. Думаю, что пользователям Linux и MacOS не нужно ничего рассказывать про терминалы. А вот для пользователей Windows я бы посоветовал использовать Git Bash, вместо стандартной консоли. Скачать Git для Windows можно отсюда https://git-for-windows.github.io/.

Открываем нашу консоль. Дальше статья предполагает, что у вас уже есть навыки работы в консоли, если же вы новичок, то советую вам ознакомится со статьей "Введение в Bash" от Ray Toal.

Работаем с Drush и Drupal Console

Drush и Drupal Console очень похожи между собой, но это два разных пакета, соответственно они должны быть установлены по отдельности.

После установки пакетов, убедитесь, что они установились правильно. Для этого введите в консоли drush version и drupal --version, после этого вы увидите примерно то же что показано ниже. Номера версий могут отличаться в вашей системе.

Drush Drupal Console
$ drush version
 Drush Version   :  8.0-dev
$ drupal --version
Drupal Console version 0.9.1

Сейчас, давайте покажем мощь Drush'а и Drupal Console, используя их вместе. Первым делом, мы будем использовать Drush для загрузки, установки и запуска Drupal 8, с помощью команд pm-download (dl) и quick-drupal (qd).

$ drush dl drupal-8.0.x
Project drupal (8.0.x-dev) downloaded to /Users/ga/tmp/intro-drush/drupal-8.0.x-dev.
Project drupal contains:
 - 1 profile: standard
 - 13 themes: …
 - 62 modules: …

$ cd drupal-8.0.x
$ drush qd --use-existing --uri=http://localhost:8383 --profile=standard
You are about to DROP all tables in your ‘…/drupal-8.0.x-dev.sqlite’ database. Do you want to continue? (y/n): y
Starting Drupal installation. This takes a while. Consider using the --notify global option.
Installation complete.  User name: admin  User password: …
Congratulations, you installed Drupal!
Caching 'uri' localhost:8383 in …/drush/drushrc.php
HTTP server listening on localhost, port 8383 (see http://localhost:8383/), serving site localhost:8383, logged in as admin...
PHP 5.6.12 Development Server started at Thu Sep 24 15:02:53 2015
Listening on http://localhost:8383
Document root is …/drupal-8.0.x-dev
Press Ctrl-C to quit.

После того как вы увидите сообщение в терминале, которое напечатано в примере выше, должна постоять небольшая пауза, и через несколько секунд должен открыться браузер со страницей только что установленного Drupal сайта. Быстро и легко!

Далее, мы будем использовать Drupal Console чтобы создать модуль для Drupal 8. Нажмите CTRL+C в окне консоли, чтобы оставить запущенный веб-сервер. Затем наберите команды, написанные в примере ниже:

$ drupal generate:module

 Welcome to the Drupal module generator 

Enter the new module name: hello
Enter the module machine name [hello]: hello 
Enter the module Path [/modules/custom]: /modules/custom
Enter module description [My Awesome Module]: Hello World
Enter package name [Other]: Other
Enter Drupal Core version [8.x]: 8.x
Do you want to add a composer.json file to your module [no]? yes
Would you like to add module dependencies [no]? no
Do you confirm generation [yes]? yes

 Generated or updated files 

Site path: …/drupal-8.0.x-dev
1 - modules/custom/bello/bello.info.yml
2 - modules/custom/bello/bello.module

Возможно, вы думали, что знаете, как нужно писать модули для Drupal 8? Думали вы, или нет, но вы только что создали модуль с помощью Drupal Console, написав всего лишь одну команду. Это круто, но модулю не хватает своего контроллера. А модуль без контроллера в Drupal 8, это все равно что модуль без hook_menu(), для Drupal 7, так что давайте пойдем дальше и заставим наш модуль что-нибудь делать. Воспользуемся возможностями Drupal Console снова:

$ drupal generate:controller

 Welcome to the Drupal Controller generator 

Enter the module name: hello
Enter the Controller class name [DefaultController]: HelloController
Controller title: Hello World
Enter the action method name [index]: greet
Enter the route path [hello/greet/{param_1}/{param_2}]: hello/greet/{world}
Controller title (empty to start with code generation): 
Do you want to generate a unit test class [yes]? yes
Do you want to load services from the container [no]? no 
Do you confirm generation [yes]? yes

 Generated or updated files 

Site path: …/drupal-8.0.x-dev
1 - modules/custom/hello/src/Controller/HelloController.php
2 - modules/custom/hello/hello.routing.yml
3 - modules/custom/hello/Tests/Controller/HelloControllerTest.php

[+] Rebuilding routes, wait a moment please
[+] Done rebuilding route(s).

Генерация контроллера прошла успешно. Давайте посмотрим, что он сгенерировал для нас:

$ tree modules/custom/
modules/custom/
└── hello
    ├── Tests
    │   └── Controller
    │       └── HelloControllerTest.php
    ├── composer.json
    ├── hello.info.yml
    ├── hello.module
    ├── hello.routing.yml
    └── src
        └── Controller
            └── HelloController.php

Откройте файл HelloController.php в вашем любимом редакторе, и замените то что передается в функцию t(), на то что показано в примере ниже:

class HelloController extends ControllerBase {
  /**
   * Greet.
   *
   * @return string
   *   Return Hello string.
   */
  public function greet($world) {
    return [
        '#type' => 'markup',
        '#markup' => $this->t('Hello, @world!', array('@world' => $world))
    ];
  }
}

Это уже похоже на правильный HelloWord модуль. Давайте включим его с помощью Drush:

$ drush en hello
The following extensions will be enabled: hello
Do you really want to continue? (y/n): y
hello was enabled successfully.

Несколько шагов назад, мы с вами остановили веб-сервер, для того чтобы работать с Drupal Console, теперь нам нужно его включить. Воспользуемся командой runserver (rs). После того как сервер запустится, снова откроется браузер и перейдет на страницу которую мы укажем при запуске:

$ drush rs /hello/greet/world
HTTP server listening on localhost, port 8383 (see http://localhost:8383/hello/greet/world), serving site localhost:8383, logged in as admin...
PHP 5.6.12 Development Server started at Thu Sep 24 22:29:24 2015
Listening on http://localhost:8383
Document root is …/drupal-8.0.x-dev
Press Ctrl-C to quit.

Drupal 8 - это не сложно, если использовать правильные инструменты.

Комментарии

К сожалению, комментариев пока нет
Для того чтобы оставлять комментарии, вам необходимо авторизоваться. Вход