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.yml
、hello_worl.module
、hello_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をさらに詳しく調べると、それはセキュリティフィールドでのアクセス拒否と警告であることがわかりました。誰かが何が起こっているのか説明できますか?
問題は、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.で重要です。次のようになります。
path
、defaults
、およびrequirements
は2つのスペースでインデントする必要があります_controller
、_title
、および_permission
は4つのスペースでインデントする必要があります