2016-06-14 10 views
0

私たちのプロジェクトはSymfony 2.1から2.3に、そして今は2.7に移行されました。 FOSUserBundleは2.1で独自のプロパティを作成しましたが、それ以降のエディションでは作成しません。拡張されたFOSUserBundleベースエンティティを作成していません

php app/console doctrine:schema:updateは、実際には既存のusername、usernameCanonicalなどのフィールドを削除するコマンドを実行します。形で私たちのログを使用してログインしようとしたとき

はまた、我々が得る:

"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: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter 
       enabled: true 

     mappings: 
      FOSUserBundle: ~ 

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: ODR\OpenRepository\UserBundle\Entity\User 
    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 /エンティティ/ User.php]

namespace ODR\OpenRepository\UserBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 
} 

実行:

php app/console doctrine:mapping:info 

には、マッピングされているFOSユーザーエンティティまたはグループエンティティは表示されません。それは私たちのユーザークラスを示していますが、拡張機能は基本プロパティをプルするようには見えません。

ありがとうございました。

答えて

1

通常、アップグレードの問題が発生した場合と同様に、この問題は誤った依存関係であることが判明しました。

参照composer.jsonに示すように、すべての正しい依存関係を含むようにcomposer.json更新:

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

は、問題を解決しました。私たちの教義のバージョンは正しくなく、FOSUserBundle親クラスをメタデータ配列にコンパイルされないように「一時的」と誤って識別していました。

composer.jsonファイルを更新してcomposer updateを実行すると、すべてのスキーマが正しく生成され、ログイン機能が復元されました。

0

ルーティング設定にfosルーティングを追加しましたか?

+0

はい - すべてのルーティングはルーティング設定にも含まれています。私たちは明示的に他の4つの経路をロードするように、「登録」経路を使用しません。 「all.xml」ルート経由でロードする場合でも、システムは同じ問題を示します。 –

関連する問題