Создание модуля в Друпал 8

function dummy_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {

if('node_zaka_edit_form' == $form_id or 'node_zaka_form' == $form_id){

$form['#validate'][] = '_form_validation_number_title_validate';

}}

function _form_validation_number_title_validate(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {

$form_state->setErrorByName('field_ch', 'У вас пересекаются часы работы - измените пожалуйста дату или время');

$nid = \Drupal::routeMatch()->getRawParameter('node');

...
$r = views_get_view_result('mildlyadat', 'page_1', $form_state->getValue('field_kran')[0]['target_id']);
...
function dummy_views_query_alter(Drupal\views\ViewExecutable $view,...
$view->args[0];
$query->where[0]['conditions'][0]['value'][':node__field_kran_field_kran_target_id'] = $view->args[0];
...

1. Все свои модули нужно класть в папку /modules/custom/
2. Придумайте название модуля. Это важно. Оно, скорее всего будет отражаться практически везде. Для примера - summ
3. В папке /modules/custom/summ создаём файл summ.info.yml
4. Содержание файла:

name: Summ
description: Custom module for learning Drupal 8
type: module
core: 8.x
package: DrupalSumm

5. Зайдите в Модули, найдите и включите наш модуль. Всё должно быть без ошибок.
6. В результате - у нас есть наш подключённый модуль.

7. В той же папке нужно создать файл: summ.routing.yml

8. Содержание файла:

summ.first_page:
  path: '/first-page1'
  defaults:
    _controller: '\Drupal\summ\Controller\FirstPageController::content'
    _title: 'Hello World!'
  requirements:
    _permission: 'access content'

8. В папке /modules/custom/summ/src/Controller/ создаём файл FirstPageController.php
9. Содержание файла:

 'Hello World!',
    );
    return $element;
  }
  
}

10. Очищаем кеш и заходим по адресу: http://Вашсайт/first-page1