自定义块在Drupal 8中不起作用
我正在Drupal8Beta9中构建一个带有自定义块的模块。当我在模块中创建一个块时,我将它放在src\Plugin\block目录中。块显示在“块结构”列表中,但当我按链接添加它时,什么也没有发生。 我检查了我的代码10次,试着把我的文件放到核心模块的目录中(显然只是为了测试),试着把一些核心块文件放到我的目录中,复制粘贴代码。这些都不管用。以下是我的块文件的代码:自定义块在Drupal 8中不起作用,drupal,drupal-7,drupal-8,Drupal,Drupal 7,Drupal 8,我正在Drupal8Beta9中构建一个带有自定义块的模块。当我在模块中创建一个块时,我将它放在src\Plugin\block目录中。块显示在“块结构”列表中,但当我按链接添加它时,什么也没有发生。 我检查了我的代码10次,试着把我的文件放到核心模块的目录中(显然只是为了测试),试着把一些核心块文件放到我的目录中,复制粘贴代码。这些都不管用。以下是我的块文件的代码: <?php /** * @file * Contains \Drupal\internetdevels\Plugin\
<?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');
}
}
第四行
- 包含\Drupal\yourmodule\Plugin\Block\TestBlock
您应该将“TestBlock”更改为“YourBlockName”,因为它是类的名称
- 包含\Drupal\yourmodule\Plugin\Block\TestBlock
您应该将“TestBlock”更改为“YourBlockName”,因为它是D8中类的名称,禁用的块不再自动显示在admin/structure/block上的disabled下。首先,您必须单击禁用区域的“放置块”按钮。然后,您可以从自定义模块中选择块。在D8中,禁用的块不再自动显示在“管理/结构/块上禁用”下。首先,您必须单击禁用区域的“放置块”按钮。然后,您可以从自定义模块中选择块。您的代码看起来不错,我将建议一些检查点
检查目录结构
- 您的模块将位于模块内部
- 此文件夹应包含youtmodule.info.yml、yourmodule.module和src文件夹
- 你的Block类应该在src\Plugin\Block\
Block.php(在你的例子中是TestBlock.php)中
检查info.yml文件并检查空格位置
检查.module文件如果你没有nythink来写,他只需添加这样的内容,但这个文件是必需的
安装插件
清除缓存
检查此示例:您的代码看起来不错,我将建议一些检查点
检查目录结构
- 您的模块将位于模块内部
- 此文件夹应包含youtmodule.info.yml、yourmodule.module和src文件夹
- 你的Block类应该在src\Plugin\Block\
Block.php(在你的例子中是TestBlock.php)中
检查info.yml文件并检查空格位置
检查.module文件如果你没有nythink来写,他只需添加这样的内容,但这个文件是必需的
安装插件
清除缓存
检查此示例:我也有同样的问题。我在互联网上找到的接收器中没有一个能在Drupal8中为我创建块。我终于解决了
我使用了一些大写的模块名,比如myBlockModule。这就是问题所在(在我的windows系统上)。将模块名称更改为myblockmodule以及引用此名称的所有文件为我解决了问题。我也遇到了同样的问题。我在互联网上找到的接收器中没有一个能在Drupal8中为我创建块。我终于解决了
我使用了一些大写的模块名,比如myBlockModule。这就是问题所在(在我的windows系统上)。将模块名称更改为myblockmodule以及引用此名称的所有文件为我解决了问题。对于未来的访问者:
对我来说,当我将类名更改为与文件名完全相同时,问题就解决了(前提是文件名仅为小写字母或下划线,否则先重命名文件,然后将类名与文件名匹配。)
例如:
错误文件名和类名:
*/TestBlock.php
<?php
// import & dependancy code
class TestBlock extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
return array('#markup' => 'hello world');
}
}
<?php
// code
class test_block extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
return array('#markup' => 'hello world');
}
}
未来访客:
对我来说,当我将类名更改为与文件名完全相同时,问题就解决了(前提是文件名仅为小写字母或下划线,否则先重命名文件,然后将类名与文件名匹配。)
例如:
错误文件名和类名:
*/TestBlock.php
<?php
// import & dependancy code
class TestBlock extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
return array('#markup' => 'hello world');
}
}
<?php
// code
class test_block extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
return array('#markup' => 'hello world');
}
}
我遇到了一个类似的问题,我从以前的块复制了工作代码,只更改了相关的名称,当我启用这个新模块时。。。嘘!!!在整个Drupal中,任何页面上的所有内容都会崩溃
从localhost/phpmyadmin下载错误日志后,我可以看到:
"[Semantical Error] Couldn't find constant references_block, class Drupal\references\Plugin\Block\referencesBlock."
其中:references\u 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
}
但你仍然需要改变它
我使用了这个查询:
SELECT variables FROM `watchdog` ORDER BY wid DESC LIMIT 5
这将生成5个名为以下内容的链接:
[BLOB-8,8kb]
从下载最上面的一个开始,如果你不能下载它们(我不能),那么选择在记事本中打开它们,而不是下载
我建议您使用:Sublime Text 3打开文件,该程序几乎可以读取任何内容,您可以在此处获取:
我有一个类似的问题,我从以前的块复制了工作代码,只更改了相关的名称,当我启用这个新模块时。。。嘘!!!在整个Drupal中,任何页面上的所有内容都会崩溃
从localhost/phpmyadmin下载错误日志后,我可以看到:
"[Semantical Error] Couldn't find constant references_block, class Drupal\references\Plugin\Block\referencesBlock."
其中:references\u 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
}
但你仍然需要改变它
我使用了这个查询:
SELECT variables FROM `watchdog` ORDER BY wid DESC LIMIT 5
这将生成5个名为以下内容的链接:
[BLOB-8,8kb]
从下载最上面的开始,如果你不能下载(我不能),那么选择下载