Я создал пользовательский модуль в Drupal 8, и мои журналы ошибок дали мне следующее сообщение:
ReflectionException: класс Drupal \ onesignal_api \ src \ Controller \ OneSignalApiController не существует в ReflectionMethod -> __ construct () (строка 123 из core / lib / Drupal / Core / Entity / EntityResolverManager.php)
вот мои файлы:
onesignal_api.routing.yml:
onesignal_api:
path: '/onesignal_api'
defaults:
_controller:'Drupal\onesignal_api\src\Controller\OneSignalApiController::hook_onesignal_api_insert'
_title: 'One Signal API'
requirements:
_permission: ‘access content’
OneSignalApiController.php:
<?php
namespace Drupal\onesignal_api\Controller;
class OneSignalApiController {
/***
* Hook into OneSignal API to send push notifications once a new node is created
*/
function hook_onesignal_api_insert(Drupal\Core\Node\NodeAPI $node) {
if($node->isNew()) {
// Code to execute
}
}
}
В чем проблема?
Проблема заключается в стоимости _controller:
'Drupal\onesignal_api\src\Controller\OneSignalApiController::hook_onesignal_api_insert'
Вы должны удалить \src
,
Это значение должно ссылаться на пространство имен, namespace Drupal\onesignal_api\Controller;
не путь.
Кроме того, возможно, что-то просто потеряно при переводе при публикации вопроса здесь, но отступ в вашем файле маршрутизации отключен, и у вас есть несколько фигурных кавычек access content
это должно быть заменено прямыми кавычками.
onesignal_api:
path: '/onesignal_api'
defaults:
_controller: 'Drupal\onesignal_api\Controller\OneSignalApiController::hook_onesignal_api_insert'
_title: 'One Signal API'
requirements:
_permission: 'access content'
Других решений пока нет …