2

Drupal 8 ベータ 9 でカスタム ブロックを使用してモジュールを構築しています。モジュールでブロックを作成するときは、src\Plugin\Block ディレクトリに配置しています。ブロックは「ブロック構造」リストに表示されますが、リンクを押して追加しても何も起こりません。コードを 10 回見直し、ファイルをコア モジュールのディレクトリに配置しようとし (明らかにテストのためだけに)、いくつかのコア ブロック ファイルをディレクトリに配置して、コードをコピーして貼り付けようとしました。これはどれも機能しません。これが私のブロックファイルのコードです:

<?php
/**
 * @file
 * Contains \Drupal\internetdevels\Plugin\Block\TestBlock.
 */

namespace Drupal\internetdevels\Plugin\Block;
use Drupal\Core\Block\BlockBase;

/**
 * Provides 'my custom' block.
 *
 * @Block(
 *   id = "my_custom_block",
 *   admin_label = @Translation("My Custom Block"),
 *   category = @Translation("System"),
 * )
 */
class TestBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return array('#markup' => 'hello world');
  }

}
4

7 に答える 7

2

同じ問題がありました。私がインターネットで見つけたレシピはどれも、drupal 8 でブロックを作成するのに機能しませんでした。最後に私はそれを解決しました。

myBlockModule のように、モジュール名にいくつかの大文字を使用しました。これが問題でした (私の Windows システムでは)。モジュール名を myblockmodule に変更し、この名前が参照されているすべてのファイルで問題が解決しました。

于 2016-06-23T10:16:39.980 に答える
0

4行目

  • \Drupal\yourmodule\Plugin\Block\TestBlock が含まれます。

クラスの名前であるため、「TestBlock」を「YourBlockName」に変更する必要があります

于 2015-04-08T08:55:28.433 に答える
0

将来の訪問者
のために:クラス名をファイル名とまったく同じに変更すると、問題は解決しました(ファイル名が小文字またはアンダースコアのみである場合、それ以外の場合は、最初にファイルの名前を変更してから、クラス名をファイル名に一致させます.)

例: 誤ったファイル名 & クラス名: */ TestBlock.php

<?php
// import & dependancy code
class TestBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return array('#markup' => 'hello world');
  }

}

正しいファイル名とクラス名:
*/ test_block.php

<?php
// code
class test_block extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return array('#markup' => 'hello world');
  }

}
于 2017-04-19T14:36:52.457 に答える