2016-06-04 1 views
0

나는 일대일 관계 및 부분 양식 제출에 문제가 있다고 생각합니다. 다음과 같은 관계선택 자녀를 둔 양식 제출 및 유효성 확인

  • Opportunity
  • Deal
  • PaymentPreferences

: 나는 다음과 같은 요소를 가지고

: 여기

는 시나리오의

,
  • Opportunity이있다 하나 Deal
  • Opportunity 하나를 가지고 PaymentPreferences

나는 또한 엔티티 관계와 일치하도록 다음과 같은 형태가 : 아이 DealTypePaymentPreferencesType 있다

  • OpportunityType
numberOfPayments

내가 필요 :

  • 하여 생성하는 것이 까다로운 얻는 곳 16,

    여기 Opportunity->paymentPreferences 다음 null가 아닌 경우는

  • PaymentPreferences은 필수 속성이있다

    • Opportunity->paymentPreferences는 선택 사항입니다 ...입니다 API와 함께 Opportunity을 제출할 수있는 API PaymentPreferences
    • PaymentPreferences이 API 측에서 그래서

    ...

    을 추가 할 수있는 프론트 엔드 양식을 생성하지 않고하지만 나는이 양식에 이벤트 리스너를 사용하여 해결 될 수 있다고 생각합니다. 제출 된 데이터에 PaymentPreference이 없으면 PaymentPreferencesTypeOpportunityType 양식에 추가하지 마십시오. 소리 OK?

    프런트 엔드 측에 '지불 환경 설정 추가'버튼이 필요하다고 생각합니다. 이 방법이 올바른지 또는 어떻게 추가 할 것인지 확실하지 않습니다. 이것이 일대 다 관계라면 allow_add와 allow_remove와 함께 CollectionType을 사용할 수 있습니다.

    Symfony3를 실행 중입니다.

+0

비슷한 문제 같은 것을 사용하십시오 numberOfPayments 필드에 거짓 = 널 (NULL) 사용 :. http://stackoverflow.com/questions/120062 40/optional-embed-form-in-symfony-2 –

+0

분명히 2011 년에이 문제에 대한 답변을 찾으려고했습니다. https://groups.google.com/forum/#!msg/symfony2/_VpzT-Rsx7A/YfmUibHea00J –

답변

0

어쩌면 당신이 뭔가를 할 수 있습니다 :

  • 은 항상 기본 폼에 하위 폼 PaymentPreferencesType를 추가합니다.
  • 표시하거나 PaymentPreferences의 필드를 숨길 수, 버튼이나 체크 박스로, 전면에 개체 PaymentPreferences
  • 에 사용자가 "활성"필드를 추가, (필드를 초기화하는 것을 잊지 마세요 때 하위 폼은 숨겨진 - 즉이다 $('#paymentPreferences_numberOfPayments').val('').)
당신의 엔티티 PaymentPreferences에서 다음

대신 단지

use Symfony\Component\Validator\Constraints as Assert; 
/** 
* @Assert\IsTrue(message="Please indicate the number of payments") 
*/ 
public function isValid() 
{ 
    return $this->active == null || ($this->active != null && $this->numberOfPayments != null) 
} 
+0

가능한 유효성 검사 그룹도 생각 중이었습니다. –