定制模块没有在Drupal 8个工作(Custom blocks not working in Dr

2019-10-22 13:07发布

我建立自定义模块一个模块在Drupal 8的测试版9.当我创建我的模块中的一个模块,我把它放在src \插件\目录座。 在“块结构”列表中的块表演,但是当我按下链接添加它,什么都不会发生。 我回顾我的代码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');
  }

}

Answer 1:

在D8,禁用块不再自动禁用下出现管理员/结构/块上。 首先,你必须点击“将块”按钮,残疾人区域。 然后,你可以选择从你的自定义模块块。



Answer 2:

我遇到过同样的问题。 我在网上查到的recepies的非将努力创造在Drupal 8块给我。 Finaly我的工作了。

我使用了一些盖帽为我的模块名称一样myBlockModule。 这是问题(我的Windows系统上)。 更改模块名称myblockmodule并在这名被引用的所有文件解决了这个问题对我来说。



Answer 3:

4号线

  • 包含\ Drupal的\ yourmodule \插件\块\ TestBlock。

你应该改变“TestBlock”到“YourBlockName”,因为它是你的类的名称



Answer 4:

你的代码看起来很不错,我会提出一些检查点

  1. 检查目录结构
    • 你的模块将里面的模块
    • 此文件夹应该包含youtmodule.info.yml,yourmodule.module和src文件夹
    • 侑Block类768,16是内部SRC \插件\块\ <somename> Block.php(你的情况TestBlock.php)
  2. 检查info.yml文件,并检查空间intantation
  3. 检查.module文件,如果你没有nythink写他只是添加内容,像这样的,但需要此文件

<?php /**
* @file
*/ ?>

  1. 安装插件
  2. 清除缓存

检查此示例: http://wiki.workassis.com/drupal-8-creating-custom-block-from-scratch/



Answer 5:

对于未来的用户:
对我来说,当我改变了类的名称完全一样作为文件名问题解决了(提供的文件名是唯一的小写字母或下划线,否则第一个重命名文件,然后匹配类名的文件名)。

例如:WRONG FILENAME&类名:
* / TestBlock.php

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

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

}

RIGHT文件名和类名:
* / test_block.php

<?php
// code
class test_block extends BlockBase {

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

}


Answer 6:

我有一个类似的问题,在这里我已经从以前的块复制的工作代码和不仅改变了相关的名字,当我启用这个新的模块... BOOOOM! 一切都在整个Drupal的任何页面上崩溃无处不在。

从本地主机/ phpMyAdmin的下载错误日志后,我可以看到这一点:

"[Semantical Error] Couldn't find constant references_block, class Drupal\references\Plugin\Block\referencesBlock."

其中:references_block是我的块中的元数据的名称。 事实证明,带引号的一个缺失。

下面是代码的一部分:

错误代码:

<?php

/**
 * @file
 */
namespace Drupal\references\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides a 'references' Block.
 * @Block(
 *  id = references_block", <--------ERROR HERE! missing this: "
 *  admin_label = @Translation("References Block"),
 * )
 */
class referencesBlock extends BlockBase {

}

固定码:

<?php

/**
 * @file
 */
namespace Drupal\references\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides a 'references' Block.
 * @Block(
 *  id = "references_block", <-------- ERROR FIXED!
 *  admin_label = @Translation("References Block"),
 * )
 */
class referencesBlock extends BlockBase {
    // lots of code
}

如何下载从本地主机/ phpMyAdmin的错误日志:

(如果你赶时间, 只读过粗体字

  1. 请访问: 本地主机/ phpMyAdmin的
  2. 寻找你的Drupal数据库
  3. 你应该找一个叫做表的数据库的底部:看门狗
  4. 点击表看门狗所以你看看里面有什么
  5. 在顶部 ,你的导航,你将会看到一个叫做标签:SQL,单击
  6. 现在你已经有了,你需要查询的一部分,所以这是比较容易,它应该是这样的:

     SELECT * FROM `watchdog` WHERE 1 

    但你仍然需要去改变它

  7. 我用这个查询:

     SELECT variables FROM `watchdog` ORDER BY wid DESC LIMIT 5 
  8. 这会产生一个名为像这样5个环节:
    [BLOB - 8,8 KB]

  9. 通过下载顶部一个 ,如果你不能下载它们(我不能),然后选择在记事本中,而不是下载到打开它们开始。
  10. 我建议你使用:崇高的文本3打开文件,该程序可以读取几乎所有的东西,你可以在这里https://www.sublimetext.com/3


Answer 7:

class TestBlock extends BlockBase {

/*
** {@inheritdoc}
*/

public function build() {
   return array(
     '#markup' => $this->t('Welcome page!'),
   );
   }
}

使用下面的链接以编程方式创建新的自定义集团。



文章来源: Custom blocks not working in Drupal 8