web-dev-qa-db-ja.com

Hello Worldカスタムモジュールでアクセスが拒否されました

Debian VPSサーバーにインストールされたDrupal 8。インストールされているテーマの中には、機能しないものと機能するものがあります。 drupalの初心者向けの本に記載されているように、単純な「Hello World」モジュールを作成しようとしたとき、モジュールのインストールは問題ありませんでした。しかし、開こうとすると:www.my***site.com/hello/world「アクセス拒否」メッセージが表示されました。インストール後drupal私は これとそのコメント を使用して権限を扱いました:chown -R www-data:www-data drupal/

Hello Worldモジュールの作成drupal/module 作成した custom/およびcontrib/フォルダとcustom/hello_world/。以内に hello_world/は3つのファイルを作成しましたhello_world.info.ymlhello_worl.modulehello_world.routing.ymlおよびhello_world/src/Controller/HelloWorldController.php

hello_world.info.yml

name: Hello World
type: module
description: 'A basic Drupal 8 Hello World Module.'
package: Custom Modules
version: 1.0
core: 8.x

hello_world.routing.yml

hello_world_settings:
  path: '/hello/world'
defaults:
  _controller: '\Drupal\hello_world\Controller\HelloWorldController::
myCallbackMethod'
  _title: 'Hello World'
requirements:
  _permission: 'access content'

hello_world/src/Controller/HelloWorldController.php

<?php
/**
* @file
* Contains \Drupal\hello_world\HelloWorldController.
*/
namespace Drupal\hello_world\Controller;
/**
 * Provides route responses for the hello world page example.
 */
class HelloWorldController {
  /**
  * Returns a simple hello world page.
  *
  * @return array
  * A very simple renderable array is returned.
  */
  public function myCallbackMethod() {
    $element = array(
      '#markup' => '<p><b>Saying Hello World in Drupal 8 is cool!</b></p>',
    );
    return $element;
  }
}

www.my **** website.com/admin/hello/worldを開くと、アクセスが拒否されました。 My ** website.com/admin/reports/dblog/event/*** 5をさらに詳しく調べると、それはセキュリティフィールドでのアクセス拒否と警告であることがわかりました。誰かが何が起こっているのか説明できますか?

2
pigeon

問題は、hello_world.routing.ymlファイルのインデントにあります。インデントを次のように変更するだけです。

hello_world_settings:
  path: '/hello/world'
  defaults:
    _controller: '\Drupal\hello_world\Controller\HelloWorldController::myCallbackMethod'
    _title: 'Hello World'
  requirements:
    _permission: 'access content'

そしてアクセス拒否の問題は解決されるべきです。 YAMLファイルのインデントは、Drupal 8.で重要です。次のようになります。

  • pathdefaults、およびrequirementsは2つのスペースでインデントする必要があります
  • _controller_title、および_permissionは4つのスペースでインデントする必要があります
9
Nitesh Sethia