3
私はリンクがvocabolaryIdフィールドである新しい/編集アクションに対して、ユーザが親(常にカテゴリ)を選択できるエンティティ(カテゴリ)を持っています。symfony2 + EntityType + queryBuilderとデフォルトのトップ値/エントリ
これは私のCategoryTypeです。
class CategoryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$vocId = $options['data']->getVocabularyId();
$builder
->add('name')
->add('vocabularyId',HiddenType::class,[
'data' => $vocId,
])
->add('description')
->add('weight',null,[
'label' => 'Posizione'
])
;
$builder->add('parent',EntityType::class,array(
'class' => 'AppBundle:Category',
'query_builder' => function (EntityRepository $er) use ($vocId) {
return $er->createQueryBuilder('c')
->where('c.vocabularyId = ?1')
->orderBy('c.name')
->setParameter(1,$vocId);
}
));
}
私は「query_builder」パラメータを使用するのと同じvocabularyIdを持つすべてのカテゴリのリストを取得するには。
フォームをsymfonyに提出する際に、親(または空のテーブル)を選択せずに「この値は無効です」と返信します。 (親フィールドの場合)。
"null"の親を設定するにはどうすればよいですか?私は親を持たないカテゴリを意味します。
EDIT:私は「 『必要』 => false」に追加したが同様ステファンVierkantによって言うが、今、私は別のエラーを持っている:
:「警告spl_object_hash()は、文字列が与えられ、パラメータ1が対象であることを期待します」これは私のコントローラのnewAction機能である:
/**
* Creates a new Category entity.
*
* @Route("/new", name="admin_category_new")
* @Method({"GET", "POST"})
*/
public function newAction(Request $request, $vocId)
{
$category = new Category($vocId);
$form = $this->createForm('AppBundle\Form\CategoryType', $category);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
dump($category);
exit();
$em->persist($category);
$em->flush();
return $this->redirectToRoute('admin_category_show', array('vocId' => $vocId, 'id' => $category->getId()));
}
return $this->render('category/new.html.twig', array(
'category' => $category,
'form' => $form->createView(),
'vocId' => $vocId
));
}
私はあなたのコードで試してみましたが、今は "警告:spl_object_hash()は、パラメータ1がオブジェクトであることを期待しています"という文字列を返します。 – ZioBudda
エンティティを保存するコントローラアクションで質問を更新してください。 –
これはおそらく役立ちます:http://stackoverflow.com/a/30181516/1405981 –