1

プロジェクト、ユーザー、モジュールの 3 つのエンティティがあります。

モジュール エンティティは次のフィールドを取得しました:

  1. $id
  2. $user - User エンティティとの多対 1
  3. $project - プロジェクト エンティティとの多対 1
  4. $modules - ArrayCollection

モジュールコントローラー:

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

ModuleType が問題です。$modules フィールドを使用して、特定のユーザー (userId) 固有のプロジェクト (projectId) に対してのみフォーム コレクションを構築したいと考えています。

setDefaultsOptions を設定して、(フォームを構築するために) クラス Module を正しく使用し、オプション user と project を使用するにはどうすればよいですか?

@編集わかりました、それはほとんど私が欲しいものです:

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',
    ));
}

正しいフォームになりますが、すべてのチェックボックスがオフになっています。理由はありますか?

4

0 に答える 0