1

我已经在 Drupal8 站点上成功安装了我自己的模块。我尝试通过输入 routing.yml 文件中指定的路径来访问它,但我收到“找不到页面”错误。我几乎可以肯定我的模块编写正确(我正在关注一个教程,其中成功访问了相同的模块)。什么可能导致我的问题,我该如何解决?

这是我的模块文件:1)kalvis.info.yml

name: 'Kalvis'
description: 'My module'
type: 'module'
core: 8.x

2)kalvis.routing.yml

kalvis.content:
    path: /kalvis/{$from}/{$to}
    defaults:
        _content: 'Drupal\kalvis\Controller\kalvisController::content'
        _title: 'My module'
    requirements:
    _permission: 'access content'

3)kalvisController.php

<?php

namespace Drupal\kalvis\Controller;
use Drupal\Core\Controller\ControllerBase;
class kalvisController extends ControllerBase{
    public function content($to, $from)
    {
        $message = $this->t('%from sends message %to', [
            '%from' => $from,
            '%to' => $to,
        ]);
        return $message;
    }
}
?>

这是我存储这些模块文件的方式:

www/drupal8/modules/kalvis
                    kalvis.info.yml
                    kalvis.routing.yml
                    /src/Controller
                        kalvisController.php

我尝试通过输入诸如http://localhost/drupal8/admin/kalvis/Kalvis/Drupalhttp://localhost/drupal8/kalvis/Kalvis/Drupal之类的 URL 来访问模块,但仍然遇到同样的问题。

我正在使用安装在本地主机(WAMP)上的 Drupal 8.0.0 beta10

4

1 回答 1

2

在路由 yml 文件中,在路径值周围添加单引号。还要$从 2 个参数中删除符号。

从Drupal 8 的beta 4开始,您必须指定_controller返回渲染数组的路径。

kalvis.routing.yml文件为:

kalvis.content:
  path: '/kalvis/{from}/{to}'
  defaults:
    _controller: '\Drupal\kalvis\Controller\kalvisController::content'
    _title: 'My module'
  requirements:
    _permission: 'access content'

在您的kalvisController.php中,将返回值更改为渲染数组return array('#markup' => $message);

于 2015-05-21T19:26:36.480 回答