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