我在Drupal 8中创建了一个自定义模块,错误日志显示了以下消息:
ReflectionException:类Drupal\onesignal_api\src\Controller\OneSignalApiController在ReflectionMethod->__construct((中不存在(core/lib/Drupal/core/Entity/EntityResolverManager.php的第123行(
这里是我的文件:
onesignal_api.routing.yml:
onesignal_api:
path: '/onesignal_api'
defaults:
_controller:'Drupalonesignal_apisrcControllerOneSignalApiController::hook_onesignal_api_insert'
_title: 'One Signal API'
requirements:
_permission: ‘access content’
OneSignalApiController.php:
<?php
namespace Drupalonesignal_apiController;
class OneSignalApiController {
/***
* Hook into OneSignal API to send push notifications once a new node is created
*/
function hook_onesignal_api_insert(DrupalCoreNodeNodeAPI $node) {
if($node->isNew()) {
// Code to execute
}
}
}
问题出在哪里?
问题在于_controller:
的值
'Drupalonesignal_apisrcControllerOneSignalApiController::hook_onesignal_api_insert'
您需要移除src
。
该值应该引用命名空间,namespace Drupalonesignal_apiController;
而不是路径。
此外,在此处发布问题时,可能在翻译中丢失了一些内容,但路由文件中的缩进已关闭,并且access content
周围有一些花引号,需要用直引号替换。
onesignal_api:
path: '/onesignal_api'
defaults:
_controller: 'Drupalonesignal_apiControllerOneSignalApiController::hook_onesignal_api_insert'
_title: 'One Signal API'
requirements:
_permission: 'access content'