"Color"속성을 User 클래스에 추가 했으므로 사용자가 등록되면 임의의 색을이 사용자에게 할당하려고합니다.symfony2 : 등록 양식을 제출 한 후 양식에없는 사용자 속성을 설정하는 방법은 무엇입니까?
이 작업을 현명하게 수행하는 방법은 무엇입니까?
"Color"속성을 User 클래스에 추가 했으므로 사용자가 등록되면 임의의 색을이 사용자에게 할당하려고합니다.symfony2 : 등록 양식을 제출 한 후 양식에없는 사용자 속성을 설정하는 방법은 무엇입니까?
이 작업을 현명하게 수행하는 방법은 무엇입니까?
User 클래스 생성자에서 설정하십시오.
FOSUserBundle의 사용자 constructor에서 새 사용자의 기본값을 설정하는 좋은 예를 찾을 수 있습니다.
이 접근법의 장점 중 하나는 지속성 계층 이벤트에 의존하지 않으며 지속성 계층 없이도 작동한다는 것입니다.
사용자 엔터티에 prePersist 이벤트를 추가합니다.
사용자 클래스에 임의로 사용자의 색 속성을 설정하는 setRandomColor
메서드를 정의하십시오.
그런 다음 doctrine 엔티티 config에 prePersist 이벤트로 추가하십시오. ,
$this->getUser()->getAttribute('attr-name');
하지만 :
lifecycleCallbacks:
prePersist: [ setRandomColor ]
사용하면 단일 세션에서 사용자 색상을 필요로하는 경우 당신이하고있는 사용자에 대한 속성을 정의 할 수 있습니다
$this->getUser()->setAttribute('attr-name',$attr-value);
와 함께 그 속성을 얻을 속성이 사용자 테이블의 속성 인 것처럼 사용자가 원할 경우
(명백하게) 사용자의 테이블의 기본 키를 통해 hash function를 사용하여 색상을 얻을 스키마를 업데이트하고 테이블
의 필드를 추가합니다.
행운을 빈다.