Symfony2 Forms - 从属实体字段

时间:2013-03-25 17:33:50

标签: forms symfony

关于汽车应用,我有一个表格,用户可以选择品牌和型号;目的是模型取决于品牌。例如,当您选择"品牌A"时,则仅显示与品牌A相关的模型。

现在,我已经在初始表单上被阻止了(没有设置数据);显示默认品牌,我希望显示与此品牌相关的模型。

我按照一些教程添加了一个事件订阅者,但我无法使其正常工作;我无法将品牌的字段值输入我的订阅者......我尝试获取Brand实体,但逻辑上它是空的(因为表单尚未提交)。

有人有想法吗?

FormType:

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

    $builder->add( 'brand', 'entity', array(
        'class' => 'MyBundle:Brand',
        'property' => 'name',
    ));

    $builder->add( 'model', 'entity', array(
        'class' => 'MyBundle:Model',
        'property' => 'name',   
    ));


    /* Add event for the first model choices */
    $builder->addEventSubscriber( new ModelChoicesSubscriber() );
}

FormSubscriber:

class ModelChoicesSubscriber implements EventSubscriberInterface {

    public static function getSubscribedEvents() {

        return array( FormEvents::PRE_SET_DATA => 'preSetData' );
    }

    public function preSetData( FormEvent $event ) {
        $data = $event->getData();
        $form = $event->getForm();

        if( $data == null ) {
            return;
        }

        $brand = $form->get( 'brand' );
    }

}

0 个答案:

没有答案