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

Posted

技术标签:

【中文标题】Sonata Admin:想要创建全局配置页面【英文标题】:Sonata Admin: Want to create global configuration page 【发布时间】:2014-01-01 01:00:33 【问题描述】:

我需要创建一个没有列表视图的单一全局配置页面,只是一个带有多个输入的页面,例如:

fb 页面链接 谷歌分析 ID 一些默认的前端文本 复选框选项:显示简介、显示社交媒体等。

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

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

我正在使用:

Symfony 2.3.X 最新版 奏鸣曲缓存 2.1.5 奏鸣曲乐段 2.2.7 奏鸣曲易扩展 2.1.4 奏鸣曲管理员 2.2.8 奏鸣曲学说-orm-admin 2.2.5 奏鸣曲 jquery 1.8.*@dev 奏鸣曲国际版 2.2.*@dev 奏鸣曲用户 2.2.*@dev 奏鸣曲媒体 2.2.*@dev 奏鸣曲第 2.3 页。*@dev 奏鸣曲 seo 1.1.*@dev Stof Doctrine Extensions 最新

编辑

在 pulzarraider 的回答和更多搜索之后,我最终得到了 CRUD 控制器的覆盖 listAction。

详细来说,首先创建服务定义(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

然后为这个特定操作创建管理类:

<?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')
        ));
    

?>

感谢您对此的帮助!

【问题讨论】:

感谢分享答案,请问您也可以分享本页的内容StackSiteBundle:Administration:configuration-view.html.twig 吗? 【参考方案1】:

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

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

【讨论】:

这给了我两个提示,但我最终覆盖了 listAction,因为我需要在您从顶部菜单中选择项目后立即显示自定义表单。那成功了。稍后我可能会发布代码如何做到这一点。 @ShachMaT - 显然,您没有时间发布代码。您错过了回馈社区的机会。 @roelleor 是的,我真丢脸。即使我发布了“代码”,所以谢谢你打我的头;)迟到了。

以上是关于Sonata Admin:想要创建全局配置页面的主要内容,如果未能解决你的问题,请参考以下文章

Sonata Admin:获取所有页面的下拉列表

Sonata admin 一对多和多对一显示列表

在Symfony 4上的Sonata管理页面中创建新页面

在 Symfony 4 上的 Sonata 管理页面中创建一个新页面

Sonata Admin 中的多个嵌套集合字段

四 Django框架,models.py模块,数据库操作——创建表数据类型索引admin后台,补充Django目录说明以及全局配置文件配置