2

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

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

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

有人有想法吗?

表单类型:

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

表单订阅者:

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

}
4

0 回答 0