SonataAdminBundle:显示非粗体(统计信息) [英] SonataAdminBundle : display non crud (statistics)

查看:79
本文介绍了SonataAdminBundle:显示非粗体(统计信息)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Sonata管理员捆绑包来生成后端,对此我感到非常满意,我也希望使用后端来显示统计信息.

I'm using sonata admin bundle to generate my backend, I'm so happy with it that I would like to use my backend to display statistics as well.

我想我可以通过调整bundle的视图来做到这一点,也许是"standard_layout.html.twig".

I guess I can do that by tweaking bundle's views, "standard_layout.html.twig" maybe.

问题是,我找不到示例,甚至没有人在谈论它,所以我想知道,这可能吗?人们不是因为它太简单而谈论它吗?你这样做了吗?

Problem is, I can't find examples or even people speaking about it, so I'm wondering, is that possible ? Aren't people speaking about it because it's too simple ? Did you do it ?

我真的很想拥有一个后端,所以请赐教!

I really would like to have a single backend, so pls enlighten me !

谢谢你, copndz

Thank you, copndz

推荐答案

由于pulzarraider向我们解释了一种实现方法,因此我将另作解释.

Since pulzarraider explained us one way to do this I'll explain the other.

使用块捆绑包的方式可以以非常强大的方式自定义仪表板. 您可以同时关注批量捆绑文档

The block bundle's way allow to custom the dashboard in a pretty powerful way. You can follow Block bundle doc at the same time

1.在Copndz \ MyBundle \ Block \ Service中创建StatisticsBlockService.php

我想通过对存储的数据进行数学运算来显示统计信息:我需要

I want to display stats by doing maths with data stored : I need to

  • 导入EntityManager
  • 将属性$ em添加到服务
  • 添加构造函数__construct,它将调用其父构造函数并使用传入的EntityManager设置$ em

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 }

这篇关于SonataAdminBundle:显示非粗体(统计信息)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆