首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户和UserGroups与SonataAdminBundle

用户和UserGroups与SonataAdminBundle
EN

Stack Overflow用户
提问于 2014-09-24 13:39:19
回答 2查看 2.5K关注 0票数 4

我使用的是FOSUserBundle 1.3和扩展它的SonataUserBundle。我有自己的包来扩展SonataUserBundle,在其中我保留了我的用户管理类和用户&用户组实体(以及相关的.orm.xml映射)。

我的config.yml:

代码语言:javascript
复制
parameters:
    sonata.user.admin.user.entity: Acme\Bundle\UserBundle\Entity\User
    sonata.user.admin.group.entity: Acme\Bundle\UserBundle\Entity\Group
    sonata.user.admin.user.class: Acme\Bundle\UserBundle\Admin\UserAdmin

fos_user:
    db_driver: orm
    firewall_name: main
    user_class:     Acme\Bundle\UserBundle\Entity\User
    group:
        group_class:   Acme\Bundle\UserBundle\Entity\Group
        group_manager: sonata.user.orm.group_manager
    service:
        user_manager: sonata.user.orm.user_manager

这两个实体类基本上只是扩展Sonata的用户类和组类。我的用户管理类扩展了Sonata\UserBundle\Admin\Entity\UserAdmin。

问题是,在我的/admin中,当我列出用户时,我会得到错误:

注意:未定义索引: /vagrant/vendor/sonata-project/doctrine-orm-admin-bundle/Guesser/FilterTypeGuesser.php第64行中的组

EN

回答 2

Stack Overflow用户

发布于 2015-02-10 22:09:32

编辑:正如@Hemang所指出的那样,我的第一个答案不是很明确。所以我改正了

为了获得用户实体的正确映射,必须启用SonataEasyExtendsBundle。

要做到这一点,只需编辑AppKernel.php并添加行

代码语言:javascript
复制
new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle()

在registerBundles函数中。

下面是一个工作的AppKernel.php示例:

代码语言:javascript
复制
<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{

  public function registerBundles()
  {
    $bundles = array(
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        new Symfony\Bundle\SecurityBundle\SecurityBundle(),
        new Symfony\Bundle\TwigBundle\TwigBundle(),
        new Symfony\Bundle\MonologBundle\MonologBundle(),
        new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
        new Symfony\Bundle\AsseticBundle\AsseticBundle(),
        new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),

        new Knp\Bundle\MenuBundle\KnpMenuBundle(),
        new Ivory\CKEditorBundle\IvoryCKEditorBundle(),
        new FOS\UserBundle\FOSUserBundle(),
        new Sonata\CoreBundle\SonataCoreBundle(),
        new Sonata\BlockBundle\SonataBlockBundle(),
        new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
        new Sonata\AdminBundle\SonataAdminBundle(),
        new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
        new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
        new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle(),
    );

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
      $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
      $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
      $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
    }

    return $bundles;
  }

  public function registerContainerConfiguration(LoaderInterface $loader)
  {
    $loader->load(__DIR__ . '/config/config_' . $this->getEnvironment() . '.yml');
  }

}
票数 4
EN

Stack Overflow用户

发布于 2015-02-06 16:10:05

我也有同样的麻烦。我认为奏鸣曲用户配置器没有注册原则映射. https://github.com/sonata-project/SonataUserBundle/blob/master/DependencyInjection/SonataUserExtension.php#L249

作为解决办法,我将多个关系添加到我的自定义用户实体中。

代码语言:javascript
复制
namespace  Acme\Bundle\UserBundle\Entity

class User
{

    ...

    /**                                                 
     * @ORM\ManyToMany(targetEntity="Group")            
     * @ORM\JoinTable(name="fos_user_user_group")       
     */                                                 
    protected  $groups;                                 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26018393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档