我创建了一个这样的自定义表单类型:
class PositioningFlashType extends AbstractType
{
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'game' => new Game()
));
}
public function getParent()
{
return 'form';
}
/**
* Returns the name of this type.
*
* @return string The name of this type
*/
public function getName()
{
return 'positioning_flash';
}
}
在另一种形式 ( GameType
) 类型中,我像这样使用它:
$builder
->add('flash', new PositioningFlashType(), array(
'mapped' => false,
'game' => $options['game']
))
在控制器内部,我想创建整个表单:
private function createEditForm(Game $entity)
{
$form = $this->createForm(new GameType(), $entity, array(
'action' => $this->generateUrl('game_update', array('id' => $entity->getId())),
'method' => 'PUT',
'edit' => true,
'game' => $entity
));
$form->add('submit', 'submit', array('label' => 'Speichern'));
return $form;
}
所以基本上,我要做的就是将Game
实例传递给PositioningFlashType
它的模板,我想像这样访问这个game
实例:
value="{{ asset('data/swf/backendtool.swf') }}?game={{ game.id }}
但是symfony抛出一个错误,说变量game
没有定义。
将变量从控制器传递到嵌套 FormType 的正确方法是什么?