Module Drupal 8中的自定义块未显示在块布局中

Module Drupal 8中的自定义块未显示在块布局中,module,block,drupal-8,drupal-blocks,Module,Block,Drupal 8,Drupal Blocks,我正在用Drupal8开发一个定制模块。它显示了一些使用我们服务的组织的数据。为此,我创建了一个显示数据库数据的控制器,该数据由另一个模块放在那里。从Drupal8开发的稀缺信息和教程中,我可以创建以下内容。在.routing.yml文件中,我创建了一个指向此概览表的路径,如下所示(此处没有正确复制,但缩进可以): 因此,现在可以通过URLsite.com/world访问概览。但是我们想要的是在frontpage上显示它,或者在站点的任何其他地方显示它。为此,它需要是一个块。为此,我在Organ

我正在用Drupal8开发一个定制模块。它显示了一些使用我们服务的组织的数据。为此,我创建了一个显示数据库数据的控制器,该数据由另一个模块放在那里。从Drupal8开发的稀缺信息和教程中,我可以创建以下内容。在.routing.yml文件中,我创建了一个指向此概览表的路径,如下所示(此处没有正确复制,但缩进可以):

因此,现在可以通过URL
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>