Создание модуля через командную строку

Аватар пользователя alexo alexo 22 мая 2018 в 10:23

Здравствуйте! Создаю модуль через командную строку, но не получается добавить открывающий тэг php в файл .module
Через командную строку не добавляется, а при добавлении вручную потом при включении модуля сообщение о синтаксической ошибке.
Скриншоты прилагаю.
Подскажите, пожалуйста, какая ошибка?
Также верно ли, что помещаю его в папку sites/all/modules/custom
Или нужно было в папку модуля Migrate помещать?

Полное название файла mymigrate3.module (так как создание его для модуля Migrate)
Кодировка UTF-8 without BOM

В командной строке в папке файла пишу

touch mymigrate3.module

echo <?php>>mymigrate3.module

Ошибка -bash: ?php: No such file or directory

Копирую прямо из названия файла его название для второй комнады echo и все равно такая ошибка.
Тогда скачиваю файл и в редакторе добавляю
<?php

и уже с этим кодом его заливаю, но потом при попытке включения
синтаксическая ошибка
"PHP Parse error: syntax error, unexpected $end in .../sites/all/modules/custom/mymigrate3/mymigrate3.module on line 1
Drush command terminated abnormally due to an unrecoverable error. [error]
Error: syntax error, unexpected $end in .../sites/all/modules/custom/mymigrate3/mymigrate3.module, line 1
"

При повторе уже с аналогичным модулем mymigrate4 и копированием содержимого файла .module из модуля примера Migrate (целиком вместе с комментариями)
почему-то вообще сообщение о хуке выдалось, хотя файл inc еще не был создан, но по хуку, навернео отдельную тему создам.

ВложениеРазмер
Иконка изображения 2018-05-22_10-19-53.png40.96 КБ
Иконка изображения 2018-05-22_09-57-53.png54.96 КБ
Иконка изображения 2018-05-22_09-47-57.png4.21 КБ
Иконка изображения 2018-05-22_10-26-50.png15.61 КБ
0 Thanks

Комментарии

Аватар пользователя alexo alexo 22 мая 2018 в 10:37

Спасибо большое. Тэг в файл добавляется теперь.
Но сообщение про хук такое же как для mymigrate4 на скриншоте.
Буду разбираться с этим. Хотя потом еще раз повторяю drush en и после этого через UI модуль виден нормально включенным.

Аватар пользователя alexo alexo 23 мая 2018 в 12:09

А дальше, если добавлять строки с одинарными кавычками, то нужно их как выводить через echo?
так правильно?
echo "'api' => 2," >> mymigrate.migrate.inc?

Аватар пользователя Semantics Semantics 23 мая 2018 в 12:12

Зачем вы вообще пишите модуль через echo?
Если хочется из терминала всё делать, используйте nano или vi/vim.
Там и подсветку кода можно организовать.

Аватар пользователя alexo alexo 23 мая 2018 в 12:35

Спасибо, попробую Nano - этот?
С vim у меня какие-то сложности были, не помню, уже при сохранении файла или при выходе из него, приходилось перезапускать putty, надо попробовать снова.

Аватар пользователя alexo alexo 22 мая 2018 в 14:47

Спасибо!
У меня вероятно не хватет чего-то на сервере, так что смогу затестить позже, когда разберусь, пока после npm install -g yo
пишет
npm: command not found

Понимаю в чем преимущество в сравнении с UI.
А в чем отличие по сравнению с копипастой touch и echo - это удобство и отсутвие необходимости рыться в файлах с заготовками?

А как-то можно этим способом типы материалов или миграции создавать?

Аватар пользователя bumble bumble 22 мая 2018 в 14:53

npm - это пакетный менеджер Node.js, и чтоб он был - нужно установить саму ноду (по ссылке будет инструкция).

Отличие - в использовании специализированного инструмента, который поддерживается огромным комьюнити, предоставляет кучу возможностей и не требует всех этих колхозов с touch и echo ))

Функционал инструмента по ссылке выше - весьма ограничен, но Вы можете сами написать свой генератор при небольших познаниях JS: http://yeoman.io/authoring/

Аватар пользователя gun_dose gun_dose 23 мая 2018 в 7:07
1

Немного не по теме, но если вам так нравится всё создавать из консоли, то вам нужен не седьмой друпал, а восьмой.

Аватар пользователя alexo alexo 23 мая 2018 в 8:08

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

Аватар пользователя alexo alexo 26 мая 2018 в 16:14

Вот по Друпал 7, несмотря на наличие многих солидных руководств, все равно приходится кучу разных источников использовать. А есть какие-то источники для Друпал 8, которые Вы бы могли рекомендовать для начала изучения Друпал 8 для преимущественной работы через консоль?

Аватар пользователя sas@drupal.org sas@drupal.org 23 мая 2018 в 8:48

Всегда был интерес профит использования модулей которые создают много лишнего быстро за тебя, и как бы сразу клёво время съэкономил , а потом через некоторое время вдруг что-то где то пошло не так заглянул в модуль ой, а что там для чего откуда и куда, и что там за ересь на авто добалялась ... ?!

Аватар пользователя Semantics Semantics 23 мая 2018 в 8:52

Ересь добавлена комментом выше.
"Генераторы" модулей каркас создают и описания хуков, но никак не логику.

Аватар пользователя bumble bumble 23 мая 2018 в 8:52

В том-то и дело, скаффолдинг - не должен делать работу программиста, он должен создавать только каркас (все эти рутинные имплементации повторяющиеся из модуля - в модуль), всю логику реализуем по прежнему мы ;)

Аватар пользователя gun_dose gun_dose 23 мая 2018 в 9:46

Ну скажем прямо, по началу с теми же Dependency Injection без консоли трудно совладать - приходится по каждому сервису читать доку предварительно и можно что-то напутать, это уже потом рука набивается, когда, к примеру не все сервисы загрузил из консоли и часть добавляешь сам. А энтитю без консоли создавать вообще запаришься - там тупо файлов с десяток, плюс пхп-аннотации, без которых ничего не заработает.

Аватар пользователя bumble bumble 23 мая 2018 в 9:48

Я, если что, с сарказмом писал. Не в упрек )))
Типа:

Это не я владею Drupal'ом
Это Drupal - владеет меня...

Аватар пользователя gun_dose gun_dose 23 мая 2018 в 10:18

Ну тут человек за советом пришёл, поэтому развёрнутая инфа ему не помешает.

Аватар пользователя alexo alexo 23 мая 2018 в 10:25
<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

Всегда был интерес профит использования модулей которые создают много лишнего быстро за тебя ?!

мне интересно будет посмотреть, на каком-нибудь тестовом сайте, как каркас делается автоматичсеки и по структуре, и по синтаксису и пунктуации (у меня это слабое место) и что-то использовать в качестве образца потом уже на работающем сайте.

Аватар пользователя sas@drupal.org sas@drupal.org 23 мая 2018 в 18:13

Самый лучший каркас в коде "коробки". Изучите функционал, а потом можете смотреть код который его реализуют и использовать его с "умом".

Аватар пользователя gun_dose gun_dose 24 мая 2018 в 6:56
<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

Не убедил, лишние хуки - это зло.

А какие хуки есть в Yo или друпал-консоли?

Аватар пользователя gun_dose gun_dose 24 мая 2018 в 12:07

drupal gm - экономит в пределах минуты
drupal geco - экономит минут 15
drupal gf - экономит минут 3-5
drupal gcon - экономит порядка 3 минут
drupal gpff - около 5 минут
drupal gprr - около 5 минут

Это из того, чем постоянно пользуюсь. Есть ещё штук 5 полезных команд, которые экономят по пару минут каждая.

И это без учёта возможных потерь времени, если, скажем забудешь что-то вписать в аннотацию плагина или сущности при создании полностью вручную.

Аватар пользователя bumble bumble 24 мая 2018 в 12:39
1

Главное - это экономит настроение.

На 25-ом mkdir && cd && touch mymodule.info.yml, обычно, начинаешь задумываться о смене профессии.

Не выгорайте, пацаны!

Аватар пользователя sas@drupal.org sas@drupal.org 24 мая 2018 в 13:17

> drupal gm - экономит в пределах минуты
https://docs.drupalconsole.com/ru/drupal-console/content/en/commands/gen...
Отлично минута час бережет

> drupal geco - экономит минут 15
https://docs.drupalconsole.com/ru/commands/generate-entity-content.html
Определение кастомной сущности

> drupal gf - экономит минут 3-5

https://hechoendrupal.gitbooks.io/drupal-console/content/fr/commands/gen...
Определение кастомной формы конфига

> drupal gcon - экономит порядка 3 минут

https://hechoendrupal.gitbooks.io/drupal-console/content/en/commands/gen...
Определение кастомного контроллера

> drupal gprr - около 5 минут
https://hechoendrupal.gitbooks.io/drupal-console/content/en/commands/gen...
Рест плагин сурс

e.t. https://hechoendrupal.gitbooks.io/drupal-console/content/ru

Аватар пользователя alexo alexo 25 мая 2018 в 15:00

А где можно подробнее почитать подробнее про
эти команды? Их где можно вводить? Мне не удалось найти просто по вводу их в поисковике?

Аватар пользователя Orion76 Orion76 25 мая 2018 в 22:04

блин.. отстал я от жизни.. все по старинке.. IDE, drush, drupal-консоль..
ТС, Вы бы лучше описали причину, из-за которой Вам приходтся так извращаться..
Вам бы 3 кучи советов бы навалили, как все это делать продуктивнее..

Аватар пользователя alexo alexo 26 мая 2018 в 16:15

Причина, наверное, в том, что можно одним копипастой сразу много файлов создать заранее отредактированных и также в том, что тестирую все на том же сервере где и рабочий сайт, но на тестовом домене и на хостинге такие настройки, не все файлы через панель хостинга можно редактировать, некоторые приходится скачивать, редактировать и заливать назад, что очень неудобно, также у меня разные пароли для разных сайтов для SSH и ftp и чтобы хотя бы в ftp лишний раз не скакать (хотя наверное есть какие-то средства типа маскарада и для ftp, просто я не использую пока), так вот чтобы не скакать стараюсь делать все через SSH в командной строке.

Аватар пользователя alexo alexo 26 мая 2018 в 16:18

Очень удобно, спасибо. Мне кстати и по git похожий встречался тренажер, а встречались ли Вам такие же хорошие по php тренажеры?

Аватар пользователя alexo alexo 26 мая 2018 в 16:26

Смотрю внимательнее, точнее здесь, наверное, просто справочник в стиле vim с небольшим интерактивом, а я имею ввиду с большим количеством интерактивных заданий тренажер (хотя по тренажерам лучше? отдельую тему сделать).

Аватар пользователя bumble bumble 26 мая 2018 в 16:30
1

Лучший тренажер - открытый файловый редактор, включенный интерпретатор и здоровая фантазия. ;)