Symfony2.3 - 将变量从控制器传递到 formtype 并返回
Symfony2.3 - pass variables from controller to formtype and back
我想将一个变量从控制器传递给 formtype,然后再传递回控制器。我试图了解有关 passing data from controller and passing values 的主题,但出现错误
ContextErrorException: Notice: Undefined variable: id in C:\xampp\htdocs\pso\src\Pso\ProjectBundle\Form\ProjectuserType.php line 38
而且我看不出我的错误在哪里。我想我定义了变量。因此,我很高兴得到提示,我没有看到。
控制器:
$form = $this->createForm(new ProjectuserType($id));
表格类型:
class ProjectuserType extends AbstractType
{
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$id = $this->id;
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) {
$form = $event->getForm();
$formOptions = array(
'class' => 'Pso\LogBundle\Entity\User',
'property' => 'username',
'multiple' => 'true',
'expanded' => 'true',
//Line 38
'query_builder' => function (EntityRepository $er) use($id) {
return $er->createQueryBuilder('x')->FROM('PsoLogBundle:user', 'u');
},
);
$form->add('user', 'entity', $formOptions)
->add('Submit', 'submit', array(
'attr'=> array (
'formnovalidate' => 'formnovalidate'
)
));
}
);
}
提交表单后,我想将变量传回控制器。
我的目标是,我拥有代表所有用户的表单,这些用户实际上与所代表的对象无关。为此,我想将表示对象的 id 传递给表单。当我激活表单中的复选框并提交它时,我想在数据库中创建一个条目以将用户与具有 id 的对象相关联。
你还需要加一个use ($id)
:
...
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($id) {
....
我想将一个变量从控制器传递给 formtype,然后再传递回控制器。我试图了解有关 passing data from controller and passing values 的主题,但出现错误
ContextErrorException: Notice: Undefined variable: id in C:\xampp\htdocs\pso\src\Pso\ProjectBundle\Form\ProjectuserType.php line 38
而且我看不出我的错误在哪里。我想我定义了变量。因此,我很高兴得到提示,我没有看到。
控制器:
$form = $this->createForm(new ProjectuserType($id));
表格类型:
class ProjectuserType extends AbstractType
{
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$id = $this->id;
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) {
$form = $event->getForm();
$formOptions = array(
'class' => 'Pso\LogBundle\Entity\User',
'property' => 'username',
'multiple' => 'true',
'expanded' => 'true',
//Line 38
'query_builder' => function (EntityRepository $er) use($id) {
return $er->createQueryBuilder('x')->FROM('PsoLogBundle:user', 'u');
},
);
$form->add('user', 'entity', $formOptions)
->add('Submit', 'submit', array(
'attr'=> array (
'formnovalidate' => 'formnovalidate'
)
));
}
);
}
提交表单后,我想将变量传回控制器。
我的目标是,我拥有代表所有用户的表单,这些用户实际上与所代表的对象无关。为此,我想将表示对象的 id 传递给表单。当我激活表单中的复选框并提交它时,我想在数据库中创建一个条目以将用户与具有 id 的对象相关联。
你还需要加一个use ($id)
:
...
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($id) {
....