Я разрабатываю пользовательский модуль в Drupal 8. Он показывает данные о некоторых организациях, которые используют наш сервис. Для этого я создал контроллер, который показывает данные из базы данных, которые помещаются туда другим модулем. Из скудной информации и учебников, доступных по разработке Drupal 8, я смог создать следующее. В .routing.yml файла я создал путь к этой обзорной таблице, как так (это не правильно скопировать здесь, но отступы в порядке):Мой пользовательский блок в Drupal 8 не отображается в блочном макете
OrganizationOverview.world:
path: '/world'
defaults:
_controller: 'Drupal\OrganizationOverview\Controller\OrganizationOverviewController::overview'
_title: 'World'
requirements:
_role: 'administrator'
_permission: 'access content'
Так что теперь обзор доступен с 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');
}
}
Так что теперь она должна отображаться на странице Blocks Layout (после промывки кэша, который я делаю последовательно) в site.com/admin/structure/block/
, как «Организация Обзор блока», где я должен включить его, в соответствии с много источников (Create custom Block, Block API Drupal 8). Но он не появляется там. Я попытался реализовать ContainerFactoryPluginInterface с некоторыми из этих методов, но ничего не меняет. Он не появляется. Я пробовал создать новый тестовый модуль с блоком с тем же кодом, но более простым именем, и он не появляется. Я скопировал код на другую платформу (производственный сайт), но он также не отображается там. Что я делаю не так? Кто-нибудь может мне помочь? Я знаю, что Drupal 8 является новым, но этот модуль действительно скоро должен быть опубликован.
Я голосую за этот вопрос должен быть закрыт на StackOverflow, и переехал в [Drupal ответы] (http://drupal.stackexchange.com). Я думаю, у вас будет больше шансов на полезный ответ. – marcvangend
проверить это http://stackoverflow.com/a/37856161/1153703 –