gpt4 book ai didi

symfony - SonataAdminBundle : display non crud (statistics)

转载 作者:行者123 更新时间:2023-12-03 10:19:21 27 4
gpt4 key购买 nike

我正在使用 Sonata 管理包来生成我的后端,我对它非常满意,我也想使用我的后端来显示统计信息。

我想我可以通过调整包的 View 来做到这一点,也许是“standard_layout.html.twig”。

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

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

谢谢,
康普兹

最佳答案

是的,这是可能的。可以使用 Sonata Block 或使用您自己的 Controller 来完成。

如果您使用您的 Controller ,您可以从默认 CRUD Controller 重载(一个或多个)操作,渲染结果的外观取决于您。

  • 替换默认 Controller SonataAdminBundle:CRUD与您的 Controller AcmeDemoAdminBundle:ProductStatisticsAdmin 定义您的管理服务和 删除实体 因为我们将尝试在没有 CRUD 操作的情况下呈现我们的统计数据。

    <service id="acme_demo_admin.product_statistics" class="Acme\Bundle\DemoAdminBundle\Admin\ProductStatisticsAdmin">
    <tag name="sonata.admin" manager_type="orm" group="statistics_group" label_catalogue="admin" label="Product Statistics" />
    <argument />
    <argument />
    <argument>AcmeDemoAdminBundle:ProductStatisticsAdmin</argument>
    </service>
  • 创建管理服务 ProductStatisticsAdminAcme/Bundle/DemoAdminBundle/Admin/ProductStatisticsAdmin.php .这个类将非常简单,因为我们只需要 list Action ,没有其他 CRUD 操作。

    <?php
    namespace Acme\Bundle\DemoAdminBundle\Admin;

    use Sonata\AdminBundle\Admin\Admin;
    use Sonata\AdminBundle\Route\RouteCollection;

    class ProductStatisticsAdmin extends Admin
    {
    protected $baseRoutePattern = 'product-statistics';
    protected $baseRouteName = 'productStatistics';

    protected function configureRoutes(RouteCollection $collection)
    {
    $collection->clearExcept(array('list'));
    }
    }
  • 创建您的 Controller ProductStatisticsAdminController 在 Acme/Bundle/DemoAdminBundle/Controller/ProductStatisticsAdminController.php和过载 listAction()来自 Sonata 的 CRUDController。在此操作中,您可以调用您的数据库并检索统计信息,然后使用您的模板呈现它们。

    <?php

    namespace Acme\Bundle\DemoAdminBundle\Controller;

    use Sonata\AdminBundle\Controller\CRUDController as Controller;
    use Symfony\Component\Security\Core\Exception\AccessDeniedException;

    class ProductStatisticsAdminController extends Controller
    {
    public function listAction()
    {
    if (false === $this->admin->isGranted('LIST')) {
    throw new AccessDeniedException();
    }

    //... use any methods or services to get statistics data
    $statisticsData = ...

    return $this->render('AcmeDemoAdminBundle:ProductStatistics:product_statistics.html.twig', array(
    'statistics_data' => $statisticsData,
    ));
    }
    }
  • 创建模板 product_statistics.html.twigAcme/Bundle/DemoAdminBundle/Resources/views/ProductStatistics/product_statistics.html.twig 中生成图形和显示统计信息

    {% extends base_template %}

    {% block javascripts %}
    {{ parent() }}
    {# put links to javascript libraries here if you need any #}
    {% endblock %}

    {% block content %}
    {# put some html code to display statistics data or use some javascript library to generate cool graphs #}
    {% endblock %}
  • 关于symfony - SonataAdminBundle : display non crud (statistics),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966575/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com