2012-05-09 73 views
0

我創建一個表單與一個自定義表單類型。symfony2表單驗證formbuilder和自定義表單類型

這是我的MainForm:

public function buildForm(FormBuilder $builder, array $options) { 

    $builder->add('area', new AreaSelectType($this->em, true, true, $this->organizercountry), array('selectedArea' => null,'label' => 'City'));   
    $builder->add('location', new LocationAutocompleteType('#steptwo_location_autocomplete', '#steptwo_location_hidden', '#steptwo_area_pkid'));       
} 

public function getDefaultOptions(array $options) 
{ 

    $collectionConstraint = new Collection(array(   
     'area' => new NotNull(array('message' => 'nicht leer')),    
     'location' => new NotNull(array('message' => 'nicht leer'))    
    )); 

    return array('validation_constraint' => $collectionConstraint);     
} 

這是LocationAutocompleteType:

public function buildForm(FormBuilder $builder, array $options) { 

    $builder->setAttribute('source', $options['source']);       
    $builder->add('autocomplete', 'text', array('label' => false, 'attr' => array('autocomplete' => 'off'))); 
    $builder->add('hidden', 'hidden', array('label' => false, 'attr' => array('autocomplete' => 'off')));   
} 

public function getDefaultOptions(array $options) { 

    $collectionConstraint = new Collection(array(   
     'hidden' => new NotNull(array('message' => 'nicht leer')),       
    )); 

    return array('validation_constraint' => $collectionConstraint, 'source' => 'organizer.ajax.location');         
} 

Evertything我做的,定製Formtype未通過驗證。 我必須做什麼才能正確驗證表單類型並通過父表單中的位置屬性獲取錯誤?

回答

2

getDefaultOptions主窗體的方法,您必須將'cascade_validation' => true添加到返回的數組以啓用對子窗體的驗證。這是最近尚未在文檔中更新的更改。