Jac*_*ues 5 module block drupal-8 drupal-blocks
我正在 Drupal 8 中开发一个自定义模块。它显示有关使用我们服务的一些组织的数据。为此,我创建了一个控制器,用于显示数据库中的数据,该数据由另一个模块放在那里。从 Drupal 8 开发中可用的稀缺信息和教程中,我已经能够创建以下内容。在 .routing.yml 文件中,我像这样创建了一个到这个概览表的路径(它在这里没有正确复制,但缩进没问题):
OrganizationOverview.world:
path: '/world'
defaults:
_controller: 'Drupal\OrganizationOverview\Controller\OrganizationOverviewController::overview'
_title: 'World'
requirements:
_role: 'administrator'
_permission: 'access content'
Run Code Online (Sandbox Code Playgroud)
所以现在可以通过 URL 访问概览site.com/world。但我们想要的是将其显示在首页或网站上的其他任何位置。为此,它需要是一个块。为此,我创建了一个OrganizationOverviewBlock类,OrganizationOverview/src/Plugin/Block/OrganizationOverviewBlock.php其中根据 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');
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在它应该显示在块布局页面中(在刷新缓存之后,我一直这样做)site.com/admin/structure/block/作为“组织概述块”,根据大量来源(创建自定义块,块 API Drupal 8),我应该在其中启用它。但它没有出现在那里。我已经尝试使用其中一些方法实现 ContainerFactoryPluginInterface ,但这没有任何改变。它没有出现。我尝试使用具有相同代码但名称更简单的块制作一个新的测试模块,但它没有显示出来。我已将代码复制到另一个平台(生产站点),但它也没有显示在那里。我究竟做错了什么?有人能帮我吗?我知道 Drupal 8 是新的,但这个模块真的需要尽快发布。
您将在 Drupal 示例项目中找到构建自定义块的工作示例。所以:
有了这个,你应该让你的块在你自己的模块中可用
您还可以利用这里解释的内容,其中一个 php 文件可以完成所有工作。还要检查文件和文件夹路径。
| 归档时间: |
|
| 查看次数: |
5434 次 |
| 最近记录: |