dongtaihui5131 2013-09-28 16:30
浏览 36

Symfony2:实体的FormBuilder - optionsResolver

I've got 3 entities: Project,User,Module

Module entity got fields:

  1. $id
  2. $user - Many to One with User entity
  3. $project - Many to One with Project entity
  4. $modules - ArrayCollection

ModuleController:

  $form = $this->createForm(new ModuleType($em), $module, array('user' => $userData, 'project' => $projectData));

ModuleType is the problem. I want to build form collection only for specific user (userId) specific project (projectId) with $modules fields.

How should I set setDefaultsOptions to correctly use class Module (to build form) with options user and project?

@Edit Ok it's almost what I want:

public function buildForm(FormBuilderInterface $builder, array $options)
{  
    $transformer = new ModuleToArrayTransformer($this->entityManager);
    $builder->add('modules', 'choice', array(
        'multiple' => true,
        'expanded' => true,
        'choices' => array(array_keys($options['data'][0]->getModules()))
    ))
    ->addViewTransformer($transformer);
}

public function setObject($object)
{
    $this->object = $object;
}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{   
    $resolver->setDefaults(array(
        'data_class' => 'DevDash\ProjectBundle\Entity\Module',
        'project' => 'DevDash\ProjectBundle\Entity\Project',
        'user' => 'DevDash\ProjectBundle\User',
    ));
}

It makes correct form but all boxes are unchecked. Any idea why?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 关于使用MATLAB中copularnd函数的问题
    • ¥20 在虚拟机的pycharm上
    • ¥15 jupyterthemes 设置完毕后没有效果
    • ¥15 matlab图像高斯低通滤波
    • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
    • ¥15 钢筋实图交点识别,机器视觉代码
    • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
    • ¥50 400g qsfp 光模块iphy方案
    • ¥15 两块ADC0804用proteus仿真时,出现异常
    • ¥15 关于风控系统,如何去选择