Formform 클래스의 사용자 정의가 불충분 한 경우가 거의 없습니다.Symfony2 - FormType 클래스 사용자 정의
첫 번째 것은 state
이 user
인 경우이 경우 활성화되어 있는지 확인해야 username
을 편집 할 수 없습니다. 그러나 disabled
속성을 추가하는 것만으로 입력을 보호 할 수는 없습니다. 그래서 사용자 이름 입력 필드를 표시하지 않기로했습니다. 나는 부울을 옵션을 통해 전달함으로써 그것을 달성했다.
컨트롤러 :
$userForm = $this->createForm(UserType::class, $user, array(
'is_active' => ($user->getState() == 'active')
));
그리고 UserType을 클래스 :
if ($options['is_active']) {
$builder
->add('username', EmailType::class);
}
$builder
->add('firstName', TextType::class),
...
두 번째 경우는 내가 NotBlank()
제약 조건을 제거하고 프로필 사진이 업로드 될 때 FileType
필드에서 'required' => false
속성을 추가 할 필요가 있다는 것입니다. 나는 부울을 옵션을 통해 전달함으로써 비슷한 방식으로 그것을 달성했다.
컨트롤러 :
$userForm = $this->createForm(UserType::class, $user, array(
'is_uploaded' => !empty($photo)
));
UserType을 클래스 :
// achieved same way as previous problem
내 질문
은 다음과 같습니다- 은 무엇 권고하는 경우 이러한 종류의 처리 할 것인가?
- 내가 정확하고 수용 가능한 것은 무엇입니까?
- 이러한 사례를 다루는 문서 또는 사례가 있습니까?
$ builder-> getData()에 대해 확실합니까? 지금까지 빌드 프로세스 중 양식 데이터를 얻는 유일한 방법은 청취자를 만드는 것과 관련이없는 양식 이벤트를 사용하는 것입니다. – Cerad
** form **이 아닌 ** builder **에서 호출됩니다. 그것은 당신이 마음에 가지고있는 것과 같은'getData'가 아닙니다. 이것은 두 번째 매개 변수로서'createForm' 메쏘드 나 options 배열의'data' 항목 (3 번째 매개 변수)를 통해 전달하는 초기 데이터입니다. –
멋져 보인다. 그래서 당신의 대답은 내가 내부 논리를 사용자 정의 할 수 있다는 것입니까? 그리고 당신이 제안한이 버전이 추천입니까? 제발 대답을 명확히하고 정확하게 하나 할당 할 것입니다 : –