0

カスタム フォーム タイプのフォームを作成しています。

これは私のメインフォームです:

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');                                
}

私が何をしても、カスタム Formtype は検証されません。フォーム タイプを正しく検証し、親 Form の Location 属性を介してエラーを取得するにはどうすればよいですか?

4

1 に答える 1

2

メインフォームのメソッドでは、返された配列getDefaultOptionsに追加'cascade_validation' => trueして、子フォームの検証を有効にする必要があります。ドキュメントがまだ更新されていない最近の変更です。

于 2012-05-10T04:39:49.353 に答える