2012-02-24 2 views
3

교리 모델의 일부 필드가 포함 된 매우 간단한 양식을 가지고 있습니다.Symfony 양식이 기본값을 준수하지 않음

$this->widgetSchema['fields'] = new sfWidgetFormDoctrineChoice(array(
    'model'   => 'FieldModel', 
    'expanded'  => true, 
    'multiple'  => true,)); 

$this->validatorSchema['fields'] = new sfValidatorDoctrineChoice(array(
    'model' => 'FieldModel', 
    'multiple' => true,)); 

필드는 체크 박스와 같은 형태로 표현하고 내가 확인하고 제대로 저장할 수 있어요. 이 '필드'필드는 json 구조로 변환되어 텍스트로 데이터베이스에 저장됩니다. 여태까지는 그런대로 잘됐다.

참고 : 'fields'필드는 데이터베이스에 TEXT로 저장되지만 사용자는 확인란 목록에서 값을 선택할 수 있어야합니다.

일부 체크 박스를 기본적으로 선택하려면 문제가 발생합니다.

내가하려고 노력 :
$this->setDefault('fields', array('key1','key2','key3')); 

경우 데이터베이스 필드에 대한 기본 키 (문자열)의 실제 값에 'keyX'해당합니다.

내가 할 경우

$this->getDefault('fields'); 

내가 이전에 넣어 정확하게 다시 얻을.

그러나 심포니는 체크 된대로 체크 박스를 출력하지 않습니다. 나는 '선택'위젯에 '확장 된'옵션과 '다중'옵션을 모두 제거하려고 시도해 왔기 때문에 간단한 SELECT 상자를 얻었고 기본으로 선택된 하나의 값만 제공했다.

다른 위젯 (텍스트 입력, 선택 사항 등)에 대한 기본값을 설정합니다.

btw; 필드 모델은 i18n입니다. 저장/검색이 예상대로 작동하기 때문에 여기서 중요한지는 알 수 없습니다.

또한; 양식은 include_partial()을 통해 다른 양식의 일부로 렌더링됩니다. 그게 아무것도 방해 할 수 있습니까? '부모'폼 클래스에서 :

$this->embedRelation('TheRelationThatBugsMe'); 

그리고 다음 '부모'에 대한 _form.php에서 :

include_partial('the_relation_that_bugs_me/form', array('form' => $form['TheRelationThatBugsMe'])); 

아무도 내가 적어도 잘못 간, 또는 수도 아이디어가 있습니까 내가 파기 시작해야 할 부분에 대한 조언을 해 줄 수 있습니까? 나는 양식 'fields2'에 새 필드를 만들 경우

[업데이트]

(즉, 데이터베이스의 필드로 존재하지 않음)과 위젯, 유효성 검사기를 만들 동일한 코드를 사용 기본값을 설정하면 기본값이 올바르게 렌더링됩니다. 데이터베이스의 열에 매핑 된 필드의 기본값을 설정하면 어떻게 작동하지 않습니까?

답변

3

setDefaultupdateDefaultFromObject으로 호출하기 전에 sfDoctrineForm에서 호출하면 개체가 존재하는 경우 개체의 값이 양식 기본값보다 우선합니다. updateDefaultsFromObject에는 관련 논리가 들어 있습니다. 나중에 setDefault으로 전화하거나 메서드를 재정의해야합니다.

관련 문제