Я пытаюсь добавить настраиваемый блок в панель инструментов SonataAdminBundle. Я последовал за instructinos здесь (How to add custom link or button to SonataAdminBundle Dashboard in Symfony2), и я получаю следующее сообщение об ошибке:SonataAdmin - пользовательский блок, который я пытаюсь построить, не найден
RuntimeException: The block service `sonata.block.service.processManagement` does not exist
Вот что я сделал. У меня есть файл с именем «ProcessManagementBlockService.php», который содержит следующее:
<?php
namespace IMA\ProcessManagementBundle\Block;
use Symfony\Component\HttpFoundation\Response;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\BlockBundle\Model\BlockInterface;
use Sonata\BlockBundle\Block\BlockContextInterface;
use Sonata\BlockBundle\Block\BaseBlockService;
class ProcessManagementBlockService extends BaseBlockService
{
public function getName()
{
return 'My Newsletter';
}
public function getDefaultSettings()
{
return array();
}
public function validateBlock(ErrorElement $errorElement, BlockInterface $block)
{
}
public function buildEditForm(FormMapper $formMapper, BlockInterface $block)
{
}
public function execute(BlockContextInterface $block, Response $response = null)
{
// merge settings
$settings = array_merge($this->getDefaultSettings(), $block->getSettings());
return $this->renderResponse('IMAProcessManagement:Block:blockProcessManagement.html.twig', array(
'block' => $block,
'settings' => $settings
), $response);
}
}
Я также создал файл (мнения/Block/blockProcessManagement.html.twig), который содержит шаблон блока я хочу добавить Приборная панель SonataAdmin в:
{% extends 'SonataBlockBundle:Block:block_base.html.twig' %}
{% block block %}
<table class="table table-bordered table-striped sonata-ba-list">
<thead>
<tr>
<th colspan="3">Newsletter - inviare</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="btn-group" align="center">
<a class="btn btn-small" href="#">Servizio Newsletter</a>
</div>
</td>
</tr>
</tbody>
</table>
{% endblock %}
Кроме того, я в services.yml файл моего расслоения, я следующий
services:
# ima_process_management.example:
# class: %ima_process_management.example.class%
# arguments: [@service_id, "plain_value", %parameter%]
sonata.block.service.processManagement:
class: IMA\ProcessManagementBundle\Block\ProcessManagementBlockService
arguments: [ "sonata.block.service.processManagement", @templating ]
tags:
- { name: sonata.block }
Я знаю этот файл правильно загружен, потому что я пытался поместите верхние строки непосредственно в config.yml и получите тот же результат.
Наконец, я добавил в главном config.yml файл моего проекта
sonata_block:
default_contexts: [cms]
blocks:
# Enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
# Your other blocks
sonata.block.service.text:
sonata.block.service.rss:
sonata.admin.block.search_result:
sonata.block.service.processManagement: ~
и
sonata_admin:
templates:
dashboard: SonataAdminBundle:Core:dashboard.html.twig
dashboard:
blocks:
- { position: left, type: sonata.admin.block.admin_list }
- { position: left, type: sonata.block.service.processManagement}
Я действительно не знаю, почему я получаю сообщение об ошибке, что служба делает не существует ...
Вроде бы все в порядке. Но когда я включил персонализированную службу, я не использую 'camellized', но я бы использовал' sonata.block.service.process_management'. Возможно, это не решение, но вы можете попытаться изменить его имя на всякий случай. –
@ DaniSancas, меняющий его, не решает мою проблему ... – CoachNono
Тогда я ничего не вижу. Я проверил свой собственный код, и все выглядит похоже. Может быть, глупый вопрос, но вы удалили (все) файлы кеша? –