我刚刚安装了Drupal并开始使用它,这个问题阻碍了我前进。在浏览了太多解决方案之后,我仍然无法找到解决方法。我按照Drupal网站中的步骤+许多其他人创建了一个自定义模块,但最终得到了一个" Page Not Found"登陆页面 - 页面仍然有Drupal的布局,但它没有读取我设置的控制器。
我的文件夹结构:
drupal
/modules
/custom
/sam
sam.routing.yml
sam.info.yml
sam.module
/src
/Controller
SamController.php
sam.routing.yml :(我有点丢失了这个文件,但是我一直在使用空格来缩进而不是标签,因为我知道yml文件不喜欢标签,但我和感觉Drupal没有接受这个routing.yml文件。我为缩进做了2个空格)
sam:
path: '/sam'
defaults:
_controller: 'Drupal\sam\Controller\SamController::build'
_title: 'Sams Website'
requirements:
_permission: 'access content'
我的控制器:
<?php
namespace Drupal\sam\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
class SamController extends ControllerBase {
public function build() {
return array(
'#markup' => t('Hello World'),
);
}
}
我已经检查了Apache中的错误日志,并没有真正得到任何有用的消息。我有什么遗失的吗?
答案 0 :(得分:1)
指定完全限定的类名时,您需要初始\
。只需将routing.yml
调整为
sam:
path: '/sam'
defaults:
_controller: '\Drupal\sam\Controller\SamController::build'
_title: 'Sams Website'
requirements:
_permission: 'access content'
否则它将无法构建路径,因为无法找到该类。