Symfony 2.3.6 和 Sonata Admin Bundle:空仪表板,没有错误
Posted
技术标签:
【中文标题】Symfony 2.3.6 和 Sonata Admin Bundle:空仪表板,没有错误【英文标题】:Symfony 2.3.6 and Sonata Admin Bundle : Empty dashboard and no errors 【发布时间】:2013-10-27 01:10:08 【问题描述】:我这几天一直在寻找问题所在;我按照奏鸣曲网站上的文档重复了几次,但我的仪表板仍然是空的。在编写了我的AdminClass
和Services
(并设置了config.yml
)之后,我重新生成了实体并更新了我的模式,但是 Sonata 在我的数据库中为我想要在admin
中的实体创建了一个表。
这是我的 App/Config/Config.yml
代码(导入文件顶部)
imports:
- resource: parameters.yml
- resource: security.yml
- resource: @materniteamAppBundle/Resources/config/admin.yml
- resource: @materniteamUserBundle/Resources/config/admin.yml
App/Config/Config.yml
(带有奏鸣曲配置的文件底部)
# FOS USER
fos_user:
db_driver: orm
firewall_name: main
user_class: materniteam\UserBundle\Entity\User
# ADMIN SONATA
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.block.service.text:
sonata.block.service.action:
sonata.block.service.rss:
sonata_admin:
title: Materniteam
security:
handler: sonata.admin.security.handler.role
acl_user_manager: fos_user.user_manager
这是我的实体联系人//src/APP/APPBundle/Admin/ContactAdmin.php
的管理类:
<?php
namespace materniteam\AppBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
class ContactAdmin extends Admin
protected function configureFormFields(FormMapper $formMapper)
$formMapper
->with('General')
->add('prenom')
->add('nom')
->add('adresse')
->add('codePostal')
->add('ville')
->end()
;
protected function configureListFields(ListMapper $listMapper)
$listMapper
->addIdentifier('Nom')
->add('prenom')
->add('adresse')
->add('codePostal')
->add('ville')
->add('_action', 'actions', array(
'actions' => array(
'view' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
$datagridMapper
->add('prenom')
->add('nom')
->add('adresse')
;
?>
最后这是我的服务电话//src/APP/APPBundle/Resources/config/admin.yml
services:
materniteam.app.admin.contact:
class: materniteam\AppBundle\Admin\ContactAdmin
tags:
- name: sonata.admin, manager_type: orm, group: "App", label: "Contact"
arguments: [ null, materniteam\AppBundle\Entity\Contact, SonataAdminBundle:CRUD ]
就像我说的,我没有错误,但仪表板仍然没有列出我的实体。如果您需要更多代码,请询问,我会编辑此消息。
如果任何奏鸣曲组成员正在阅读此内容:
请更新您的文档!!!
【问题讨论】:
你应该把你的答案变成答案。顺便说一句,您是否按照 sonata-project.org/bundles/admin/master/doc/reference/… 指定了access_decision_manager: strategy: unanimous
?使用role
voter 应该可以工作,除非您使用非超级管理员用户登录并且没有为该管理员启用 LIST 权限。
【参考方案1】:
看来问题出在奏鸣曲的安全部分。
在我的 config.yml 中,我使用以下值设置奏鸣曲的安全性:
security:
handler: sonata.admin.security.handler.role
告诉奏鸣曲使用基于用户角色的安全性(我认为这很棒) 通过将处理程序替换为以下内容,我成功地在奏鸣曲中看到了我的实体
security:
handler: sonata.admin.security.handler.noop
告诉奏鸣曲使用基于 Symfony 的安全性。 (顺便说一句,我将我的用户提升为 ROLE_ADMIN 以继续访问奏鸣曲仪表板)
【讨论】:
【参考方案2】:在奏鸣曲管理块中试试这个
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.block.service.text:
sonata.block.service.action:
sonata.block.service.rss:
【讨论】:
以上是关于Symfony 2.3.6 和 Sonata Admin Bundle:空仪表板,没有错误的主要内容,如果未能解决你的问题,请参考以下文章
Symfony & Sonata:如何将 javascript 添加到实体管理表单?
Symfony 4 和 Sonata News Bundle 在安装过程中出错
sonata AdminBlockServiceInterface 弃用,以明确安装 symfony 2.8 + sonata 3.10