我建立自定义模块一个模块在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');
}
}
在D8,禁用块不再自动禁用下出现管理员/结构/块上。 首先,你必须点击“将块”按钮,残疾人区域。 然后,你可以选择从你的自定义模块块。
我遇到过同样的问题。 我在网上查到的recepies的非将努力创造在Drupal 8块给我。 Finaly我的工作了。
我使用了一些盖帽为我的模块名称一样myBlockModule。 这是问题(我的Windows系统上)。 更改模块名称myblockmodule并在这名被引用的所有文件解决了这个问题对我来说。
4号线
- 包含\ Drupal的\ yourmodule \插件\块\ TestBlock。
你应该改变“TestBlock”到“YourBlockName”,因为它是你的类的名称
你的代码看起来很不错,我会提出一些检查点
- 检查目录结构
- 你的模块将里面的模块
- 此文件夹应该包含youtmodule.info.yml,yourmodule.module和src文件夹
- 侑Block类768,16是内部SRC \插件\块\ <somename> Block.php(你的情况TestBlock.php)
- 检查info.yml文件,并检查空间intantation
- 检查.module文件,如果你没有nythink写他只是添加内容,像这样的,但需要此文件
<?php /**
* @file
*/ ?>
- 安装插件
- 清除缓存
检查此示例: http://wiki.workassis.com/drupal-8-creating-custom-block-from-scratch/
对于未来的用户:
对我来说,当我改变了类的名称完全一样作为文件名问题解决了(提供的文件名是唯一的小写字母或下划线,否则第一个重命名文件,然后匹配类名的文件名)。
例如: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');
}
}
我有一个类似的问题,在这里我已经从以前的块复制的工作代码和不仅改变了相关的名字,当我启用这个新的模块... 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的错误日志:
(如果你赶时间, 只读过粗体字 )
- 请访问: 本地主机/ phpMyAdmin的
- 寻找你的Drupal数据库
- 你应该找一个叫做表的数据库的底部:看门狗
- 点击表看门狗所以你看看里面有什么
- 在顶部 ,你的导航,你将会看到一个叫做标签:SQL,单击
现在你已经有了,你需要查询的一部分,所以这是比较容易,它应该是这样的:
SELECT * FROM `watchdog` WHERE 1
但你仍然需要去改变它
我用这个查询:
SELECT variables FROM `watchdog` ORDER BY wid DESC LIMIT 5
这会产生一个名为像这样5个环节:
[BLOB - 8,8 KB]
- 通过下载顶部一个 ,如果你不能下载它们(我不能),然后选择在记事本中,而不是下载到打开它们开始。
- 我建议你使用:崇高的文本3打开文件,该程序可以读取几乎所有的东西,你可以在这里https://www.sublimetext.com/3
class TestBlock extends BlockBase {
/*
** {@inheritdoc}
*/
public function build() {
return array(
'#markup' => $this->t('Welcome page!'),
);
}
}
使用下面的链接以编程方式创建新的自定义集团。