在 Drupal 8 中创建新模块时出错
Error when a new module created in Drupal 8
我在 Drupal 8 中创建了一个自定义模块,我的错误日志给了我以下消息:
ReflectionException: Class Drupal\onesignal_api\src\Controller\OneSignalApiController does not exist in ReflectionMethod->__construct() (line 123 of 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'
我在 Drupal 8 中创建了一个自定义模块,我的错误日志给了我以下消息:
ReflectionException: Class Drupal\onesignal_api\src\Controller\OneSignalApiController does not exist in ReflectionMethod->__construct() (line 123 of 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'