1

나는 내 자신의 사용자 등급을 갖고 있으며, 소나타의 BaseUser 인 (Sonata\UserBundle\Entity\BaseUser)을 상속받습니다.SonataUserBundle FOSUserBundle UniqueEntity 이메일 및 사용자 이름

내 문제 :

"개체를 만들 수 없습니다 : 응용 프로그램 \ 소나타 \ UserBundle \ 법인 \ 사용자" SQLSTATE 나는 기존의 이메일을 사용하여 소나타 관리에서 사용자를 만들려고하면, 나는 다음과 같은 예외를 얻을 [23505] : 고유 위반 : 7 오류 : 중복 키 값이 고유 제한을 위반합니다 DETAIL : Key (email_canonical) = ([email protected])이 이미 있습니다.

& 일부 문서에서는 UniqueEntity 티켓을 사용하기 위해 적절한 사용 문을 사용했지만 사용하지 않으려 고 노력했습니다.

sonata admin을 사용하여 다른 엔터티에 UniqueEntity 주석을 아무 문제없이 사용합니다. 예외 대신 해당 이름/제목이있는 엔터티가 이미 있다는 것을 사용자에게 알리는 양식 안에 좋은 메시지가 나타납니다. 그러나 User 엔티티의 경우 단순히 같은 방식으로 작동하지 않습니다.

new Application\Sonata\UserBundle\ApplicationSonataUserBundle('FOSUserBundle') 

나는 일부 사용자 지정 열 &을 추가 한 단지, ​​FOSUserBundle

EasyExtends 번들에 의해 생성 된 사용자 정의 사용자 개체에

사용 문을 (확장 :

내가 AppKernel의 소나타 사용자 번들을 등록하는 방법입니다 ex : Project와 같은 다른 엔티티와 일대 다 관계 :

namespace Application\Sonata\UserBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Sonata\UserBundle\Entity\BaseUser as BaseUser; 
use Doctrine\Common\Collections\ArrayCollection; 
use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 

이것은 사용자를위한 주석입니다. 클래스 :이 sonata_user에 대한 내 설정이다

/** 
* User 
* 
* @ORM\Table(name="fos_users") 
* @ORM\Entity 
* @UniqueEntity("username") 
* @UniqueEntity("username_canonical") 
* @UniqueEntity("email") 
* @UniqueEntity("email_canonical") 
*/ 

는 :

fos_user: 
    db_driver:  orm 
    firewall_name: admin, user 
    user_class: Application\Sonata\UserBundle\Entity\User 
    group: 
     group_class: Application\Sonata\UserBundle\Entity\Group 
     group_manager: sonata.user.orm.group_manager 
    service: 
     user_manager: sonata.user.orm.user_manager 

나는 사용자 지정 관리 클래스

parameters: 
    #use custom user admin class 
    sonata.user.admin.user.class: Application\Sonata\UserBundle\Admin\Model\UserAdmin 
을 사용하고 있습니다 :

sonata_user: 
    security_acl: true 
    manager_type: orm 
    class: 
     user: Application\Sonata\UserBundle\Entity\User 
     group: Application\Sonata\UserBundle\Entity\Group 

이 fos_user에 대한 설정입니다

(나는 또한 defau

sonata_admin : 보안 : 핸들러 : sonata.admin.security.handler.acl 제목 : 내 앱 템플릿 : 레이아웃 : CoreBundle : 관리자 LT 관리 클래스)

이 내 소나타 관리 구성입니다 : 나는 또한 validation.yml/validation.xml 내 자신의 유효성 검사 규칙과 파일을 대체 할 시도

standard_layout.html.twig ...하지만 그들은 그런 식으로 무시하거나 뭔가있어 ...

I을 아이디어가 없습니다. 네가 나를 도울 수 있다면 정말 고마워.

<?php 
namespace Application\Sonata\UserBundle\Entity; 

... 
use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Mapping\Annotation as Gedmo; 
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 
... 

/** 
* User 
* 
* @ORM\Table(name="user") 
* @ORM\Entity() 
* @UniqueEntity("username") 
* @UniqueEntity("email") 
*/ 
class User extends AbstractedUser implements UserInterface 
... 

중요 라인 :

* @UniqueEntity("username") 
* @UniqueEntity("email") 

답변

0

은 나를 위해 작동했다
관련 문제