Module Drupal 8中的自定义块未显示在块布局中
我正在用Drupal8开发一个定制模块。它显示了一些使用我们服务的组织的数据。为此,我创建了一个显示数据库数据的控制器,该数据由另一个模块放在那里。从Drupal8开发的稀缺信息和教程中,我可以创建以下内容。在.routing.yml文件中,我创建了一个指向此概览表的路径,如下所示(此处没有正确复制,但缩进可以): 因此,现在可以通过URLModule Drupal 8中的自定义块未显示在块布局中,module,block,drupal-8,drupal-blocks,Module,Block,Drupal 8,Drupal Blocks,我正在用Drupal8开发一个定制模块。它显示了一些使用我们服务的组织的数据。为此,我创建了一个显示数据库数据的控制器,该数据由另一个模块放在那里。从Drupal8开发的稀缺信息和教程中,我可以创建以下内容。在.routing.yml文件中,我创建了一个指向此概览表的路径,如下所示(此处没有正确复制,但缩进可以): 因此,现在可以通过URLsite.com/world访问概览。但是我们想要的是在frontpage上显示它,或者在站点的任何其他地方显示它。为此,它需要是一个块。为此,我在Organ
site.com/world
访问概览。但是我们想要的是在frontpage上显示它,或者在站点的任何其他地方显示它。为此,它需要是一个块。为此,我在OrganizationOverview/src/Plugin/Block/OrganizationOverviewBlock.php
中创建了一个OrganizationOverviewBlock
类,这是符合PSR-4标准的正确方法。该类如下所示:
<?php
namespace Drupal\OrganizationOverview\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Drupal\Core\Session\AccountInterface;
/**
* Provides a 'OrganizationOverviewBlock' block.
*
* @Block(
* id = "organization_overview_block",
* admin_label = @Translation("OrganizationOverviewBlock"),
* category = @Translation("Custom")
* )
*/
class OrganizationOverviewBlock extends BlockBase
{
public function build()
{
return array(
'#markup' => 'Hello World',
);
}
public function blockAccess(AccountInterface $account)
{
return $account->hasPermission('access content');
}
}
您将在Drupal示例项目中找到构建自定义块的工作示例。因此:
- 获得项目
- 启用块示例模块
- 仔细检查工作代码
这样,您就可以在自己的模块中获得可用的块
您还可以利用所解释的内容,其中一个php文件完成所有工作。同时检查文件和文件夹路径。自定义块不需要路由文件
类TestBlock扩展了BlockBase{
/*
**{@inheritardoc}
*/
公共功能构建(){
返回数组(
“#markup”=>$this->t('欢迎页面!'),
);
}
}
您应该遵守Drupal编码标准的建议:
模块名称中没有camelCase命名约定
OrganizationOverview实际上是一个错误,您应该使用OrganizationOverview(小写/下划线)命名约定。我投票赞成在StackOverflow上关闭此问题,并将其移至。我想你会有更好的机会得到一个有用的答案。检查这个
<?php
namespace Drupal\OrganizationOverview\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Drupal\Core\Session\AccountInterface;
/**
* Provides a 'OrganizationOverviewBlock' block.
*
* @Block(
* id = "organization_overview_block",
* admin_label = @Translation("OrganizationOverviewBlock"),
* category = @Translation("Custom")
* )
*/
class OrganizationOverviewBlock extends BlockBase
{
public function build()
{
return array(
'#markup' => 'Hello World',
);
}
public function blockAccess(AccountInterface $account)
{
return $account->hasPermission('access content');
}
}
<pre>
class TestBlock extends BlockBase {
/*
** {@inheritdoc}
*/
public function build() {
return array(
'#markup' => $this->t('Welcome page!'),
);
}
}
</pre>