Sonata Admin:想要创建全局配置页面

时间:2013-12-13 09:51:19

标签: symfony sonata-admin symfony-2.3 symfony-sonata

我需要创建没有列表视图的单一全局配置页面,只需要包含输入数量的单页,如:

  • fb page link
  • google analytics id
  • 一些默认的前端文本
  • 复选框选项:show intro,show social media etc.

不需要通过记录列表,编辑,保存和返回列表等的东西。

我是否需要创建具有表单和我自己的crud的新控制器? 或者有没有办法很好地连接/覆盖奏鸣曲管理员与那种面板?

我正在使用:

  • Symfony 2.3.X最新
  • Sonata cache 2.1.5
  • Sonata block 2.2.7
  • Sonata easy-extends 2.1.4
  • Sonata admin 2.2.8
  • Sonata doctrine-orm-admin 2.2.5
  • Sonata jquery 1.8。* @ dev
  • Sonata intl 2.2。* @ dev
  • Sonata用户2.2。* @ dev
  • Sonata media 2.2。* @ dev
  • Sonata第2.3页。* @ dev
  • Sonata seo 1.1。* @ dev
  • Stof Doctrine Extensions最新

修改

在回答了pulzarraider和更多搜索之后,我最终得到了CRUD控制器的重载列表动作。

详细信息,首先创建服务定义(YML):

services:
    stack.admin.global_administration:
        class: Stack\Bundle\SiteBundle\Admin\GlobalConfigurationAdmin
        tags:
            - name: sonata.admin
              manager_type: orm
              group: Administration
              label: Global Configuration
        arguments:
            - ~
            - ~
            - StackSiteBundle:GlobalConfiguration

然后为此特定操作创建了Admin类:

<?php
namespace stack\Bundle\SiteBundle\Admin;

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

class GlobalConfigurationAdmin extends Admin
{
    protected $baseRouteName = 'global-configuration';
    protected $baseRoutePattern = 'global-admin';

    protected function configureRoutes(RouteCollection $collection)
    {
        // notice removal of create action!
        $collection->remove('create');
    }
}
?>

最后CRUD控制器显示自定义表单而不是默认实体列表操作:

<?php 
namespace Stack\Bundle\SiteBundle\Controller;

use Sonata\AdminBundle\Controller\CRUDController as Controller;
use Symfony\Component\HttpFoundation\Request;

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

        // custom code here...

        return $this->render('StackSiteBundle:Administration:configuration-view.html.twig', array(
            'action' => 'list',
            'csrf_token' => $this->getCsrfToken('sonata.batch')
        ));
    }
}
?>

感谢你帮忙解决这个问题!

1 个答案:

答案 0 :(得分:0)

是的,通过重载默认的CRUD控制器,可以在Sonata Admin中实现。

您必须创建自定义控制器并重载editAction。 在editAction中,您可以创建标准的Symfony表单,处理来自用户的数据并将其保存在任何您想要的地方。