相关疑难解决方法(0)

Symfony 2 - 如何将数据传递给formBuilder?

我在我的表单中使用实体选择列表.我只想使用特定的实体(例如:只有用户所属的组)因此,在控制器中,我正在获取这些组,并试图将它们传入formBuider.

控制器:

/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
Run Code Online (Sandbox Code Playgroud)

所以现在怎么办?如何在formBuilder中使用它?如何更改此行以使用传递的组数组?

->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
Run Code Online (Sandbox Code Playgroud)

或者以另一种方式:

class MessageType
{
/.../
  public function buildForm(FormBuilder $builder, array $options)
  {
    $builder
      ->add('group','entity',
        array(
          'class' => 'Vendor\MyBundle\Entity\Group',
          'property' => 'name',
          'query_builder' => function ($repository) {
            $qb = $repository->createQueryBuilder('group');
            $qb->add('where', 'group.administrator = :user');
            $qb->setParameter('user', $user->getId());
            return $qb;
          },
          'label' => 'Group'
        )
      )
      // Continue adding fields
    ;
  }
/.../
}
Run Code Online (Sandbox Code Playgroud)

那么如何让对象$ user在表单构建器中使用?($ user表示当前登录的用户)

php formbuilder symfony

36
推荐指数
3
解决办法
5万
查看次数

将数据从控制器传递到类型symfony2

如果我在我的表单中显示"实体"类型的字段,并且我想根据从控制器传递的参数过滤此实体类型,我该怎么做...?

//PlumeOptionsType.php
public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('framePlume', 'entity', array(
        'class' => 'DessinPlumeBundle:PhysicalPlume',
        'query_builder' => function(EntityRepository $er) {
                                return $er->createQueryBuilder('pp')
                                    ->where("pp.profile = :profile")
                                    ->orderBy('pp.index', 'ASC')
                                    ->setParameter('profile', ????)
                                ;
                            },

    ));
}

public function getName()
{
    return 'plumeOptions';
}

public function getDefaultOptions(array $options)
{
    return array(
            'data_class'      => 'Dessin\PlumeBundle\Entity\PlumeOptions',
            'csrf_protection' => true,
            'csrf_field_name' => '_token',
            // a unique key to help generate the secret token
            'intention'       => 'plumeOptions_item',
    );
}
}
Run Code Online (Sandbox Code Playgroud)

在控制器内部,我创建表单:

i have that argument that i need …
Run Code Online (Sandbox Code Playgroud)

symfony

25
推荐指数
1
解决办法
3万
查看次数

标签 统计

symfony ×2

formbuilder ×1

php ×1