[英]Symfony2 parameter with embedded forms
編輯:我找到了真正的問題!
我試圖從控制器給一個子表單一個參數。 沒有這個參數,表單就可以完美運行。
我想在選擇列表中僅顯示關系中尚未存在的用戶。 我有這個 query_builder:
'query_builder' => function(UserRepository $er) use($options) {
return $er->getFormateursAvailable($options['categ']);
},
和方法:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array('data_class' => 'Intranet\FormationBundle\Entity\CategorieFormateur', 'categ' => false));
//$resolver->setDefaults(array('data_class' => 'Intranet\FormationBundle\Entity\CategorieFormateur'));
}
對於集合表單,因此,我必須將此選項放入表單中:
'options' => $options,
但是不知道是不是真的,還得定義方法:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array('categ' => false));
}
(如果沒有參數,表單在沒有此方法的情況下工作。)並調用:
$form = $this->createForm(new GererFormateurCategorieType(), $categorie, array('categ' => $categorie));
然后,我有這個錯誤:
屬性“user”和方法“getUser()”、“isUser()”、“hasUser()”、“__get()”都不存在並且在類“Intranet\\FormationBundle\\Entity\\Categorie”中具有公共訪問權限.
關系:
類別具有此屬性:
/**
* @ORM\OneToMany(targetEntity="Intranet\FormationBundle\Entity\CategorieFormateur", mappedBy="categorie", cascade={"persist", "remove"}, orphanRemoval=true)
**/
private $formateurs;
使用 addFormateur、removeFormateur 和 getFormateurs
類別Formateur :
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Intranet\FormationBundle\Entity\Categorie", inversedBy="formateurs")
* @ORM\JoinColumn(name="categorie_id", referencedColumnName="id")
*/
private $categorie;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Intranet\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
每個屬性都有 setter 和 getter。
根據錯誤信息,您必須添加setFormateurs()
方法在你Categorie
實體:
public function setFormateurs($formateurs)
{
$this->formateurs = $formateurs;
return $this;
}
我找到了另一種方法,這不是真正的答案:
在存儲庫中,我使用 $request = Request::createFromGlobals();
我分解 $requestPathInfo() 以獲取最后一個參數,並在查詢中使用它...
但是關系中的現有用戶沒有加載,盡管他們沒有出現在列表中。
我希望有人知道如何正確地做到這一點!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.