繁体   English   中英

Symfony2.3-将变量从控制器传递到formtype并返回

[英]Symfony2.3 - pass variables from controller to formtype and back

我想将变量从控制器传递到formtype,然后再传递回控制器。 我试图实现有关从控制器传递数据传递值的主题,但出现错误

ContextErrorException:注意:未定义的变量:C:\\ xampp \\ htdocs \\ pso \\ src \\ Pso \\ ProjectBundle \\ Form \\ ProjectuserType.php行中的id

我看不到我的错误在哪里。 我想我定义了变量。 因此,我很高兴得到一个提示,我没有看到。

控制器:

$form =  $this->createForm(new ProjectuserType($id));

Formtype:

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传递给表单。 当我激活表单中的复选框并提交时,我想在db中创建一个条目以将用户与具有id的对象相关联。

您需要再添加一个use ($id)

...
$builder->addEventListener(
    FormEvents::PRE_SET_DATA,
    function (FormEvent $event) use ($id) {
    ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM