パルザレイダーがこれを行う方法の 1 つを説明したので、もう 1 つの方法を説明します。
ブロック バンドルの方法により、非常に強力な方法でダッシュボードをカスタマイズできます。ブロックバンドルのドキュメントを同時にフォローできます
1. Copndz\MyBundle\Block\Service に StatisticsBlockService.php を作成します。
保存されたデータを使用して数学を実行して統計を表示したい: 私はする必要があります
- EntityManager をインポートする
- 属性 $em をサービスに追加します
- 親コンストラクターを呼び出し、引数に渡された EntityManager で $em を設定するコンストラクター __construct を追加します
namespace Copndz\MyBundle\Block\Service;
use Symfony\Component\HttpFoundation\Response;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\BlockBundle\Model\BlockInterface;
use Sonata\BlockBundle\Block\BaseBlockService;
use Doctrine\ORM\EntityManager;
class StatisticsBlockService extends BaseBlockService
{
private $em;
/**
* {@inheritdoc}
*/
public function execute(BlockInterface $block, Response $response = null)
{
$settings = array_merge($this->getDefaultSettings(), $block->getSettings());
$myentityrepository = $this->em->getRepository('CopndzMyBundle:MyEntity');
$myentity = $myentityrepository->find('5');
return $this->renderResponse('CopndzMyBundle:Block:block_statistics.html.twig', array(
'block' => $block,
'settings' => $settings,
'myentity' => $myentity,
), $response);
}
/**
* {@inheritdoc}
*/
public function validateBlock(ErrorElement $errorElement, BlockInterface $block)
{
// TODO: Implement validateBlock() method.
}
/**
* {@inheritdoc}
*/
public function buildEditForm(FormMapper $formMapper, BlockInterface $block)
{
$formMapper->add('settings', 'sonata_type_immutable_array', array(
'keys' => array(
array('content', 'textarea', array()),
)
));
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'Text (core)';
}
/**
* {@inheritdoc}
*/
public function getDefaultSettings()
{
return array(
'content' => 'Insert your custom content here',
);
}
public function __construct($name, $templating, EntityManager $entityManager)
{
parent::__construct($name, $templating);
$this->em = $entityManager;
}
}
2. MyBundle\Ressources\config\services.yml でサービスを作成します
sonata.block.service.statistics:
class: Copndz\MyBundle\Block\Service\StatisticsBlockService
tags:
- { name: sonata.block }
arguments:
- "sonata.block.service.statistics"
- @templating
- @doctrine.orm.entity_manager
3. このサービスを config.yml の sonata_block に追加します
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.block.service.text:
sonata.block.service.rss:
sonata.block.service.statistics:
4. Copndz\MyBundle\Ressources\views\Block にテンプレート block_statistics.html.twig を作成します。
{% extends sonata_block.templates.block_base %}
{% block block %}
{{ myentity.name }}
{% endblock %}
5. 最後に、config.yml の管理バンドル構成でサービスを呼び出します。
sonata_admin:
dashboard:
blocks:
# display a dashboard block
- { position: left, type: sonata.admin.block.admin_list }
- { position: right, type: sonata.block.service.statistics }