扩展的fosuserBundle不创建基本实体



我们的项目已从Symfony 2.1迁移到2.3,现在迁移到2.7。FosuserBundle在2.1上创建了它自己的属性,但在以后的版本上没有。

php应用程序/控制台学说:架构:更新实际上会导致命令删除现有的用户名,用户纳米式式等,等等。

此外,当尝试使用我们的登录形式登录时,我们会得到:

"exception":"[object] (Symfony\Component\Security\Core\Exception\AuthenticationServiceException(code: 0): Unrecognized field: usernameCanonical at .../vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/DaoAuthenticationProvider.php:94

看来系统不知道我们扩展的基本用户伴随着fosuserbundle实体。

我将扩展的用户类减少到默认值为测试,但仍然遇到相同的问题。这是当前的代码和配置:

config.yml

    orm:
        #default_entity_manager: ~
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
        result_cache_driver:
            type: memcached
            host: 127.0.0.1
            port: 11211
            instance_class: Memcached
        metadata_cache_driver:
            type: memcached
            host: 127.0.0.1
            port: 11211
            instance_class: Memcached
        query_cache_driver:
            type: memcached
            host: 127.0.0.1
            port: 11211
            instance_class: Memcached
        filters:
            softdeleteable:
                class: GedmoSoftDeleteableFilterSoftDeleteableFilter
                enabled: true
        mappings:
            FOSUserBundle: ~
fos_user:
    db_driver: orm 
    firewall_name: main
    user_class: ODROpenRepositoryUserBundleEntityUser
    change_password:
        form:
            type: odr_user_change_password

security.yml

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            # Symfony >= 2.8
            # csrf_token_generator: security.csrf.token_manager
            # Symfony < 2.8
            csrf_provider: form.csrf_provider
        remember_me:
            key:      asdlkjf2ji802fiuaskdjokjhafsdjsfdjhjh
            lifetime: 1209600
            path:     /
            domain:   ~

用户类[src/odr/openrepository/userbundle/entity/user.php]

namespace ODROpenRepositoryUserBundleEntity;
use FOSUserBundleModelUser as BaseUser;
use DoctrineORMMapping as ORM;
/**
 * @ORMEntity
 * @ORMTable(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORMId
     * @ORMColumn(type="integer")
     * @ORMGeneratedValue(strategy="AUTO")
     */
    protected $id;
    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

运行:

php app/console doctrine:mapping:info

未显示映射的FOS用户或组实体。它确实显示了我们的用户类,但是扩展名似乎没有吸引基本属性。

谢谢您的帮助。

通常是升级问题时的情况,问题是不正确的依赖性。

更新composer.json以包含所有正确的依赖项,如参考composer.json:

中所示

https://github.com/symfony/symfony-standard/blob/2.7/composer.json

解决了问题。我们的学说版本不正确,并且错误地将fosuserbundle parent类识别为"瞬态",以免将其编译到元数据阵列中。

更新Composer.json文件并运行composer update正确生成的所有模式并恢复了登录功能。

您是否将FOS路由添加到路由配置?

相关内容

  • 没有找到相关文章