关于汽车应用程序,我有一个用户可以选择品牌和型号的表格;目的是模型取决于品牌。例如,当您选择“品牌 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' );
}
}