有點熟悉symfony,直到我發現自己處於這個過程中。2個實體1個形式Symfony 3
我有兩個實體:用戶和帳戶。
每個用戶都有一系列的賬戶,比如google賬戶,facebook賬戶等。用戶位於一個表中,帳戶位於不同的表中。顯然,帳戶是根據用戶的ID獲取的。
如何將兩個實體合併爲一個表單,以便我可以獲取,創建,編輯和/或刪除條目?
我的用戶實體:
use statements here
...
private $id;
private $fullname;
private $accounts;
public function __construct(){
$this->accounts = new ArrayCollection();
}
//setters and getters...
我的賬戶實體:
use statements here
...
private $id;
private $user_id; //id in user entity
private $service; //i.e google account
private $username;
private $password;
//setters and getters...
我的用戶表單:
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
$builder
->add('id',HiddenType::class)
->add('FullName',TextType::class)
->add('accounts'.,CollectionType::class,[
'entry_type' => AccountType::class
])
...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User'
));
}
個賬戶形成:
class AccountType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
$builder
->add('id',HiddenType::class)
->add('accountname',TextType::class) //i.e Google Account
->add('username',TextType::class)
->add('password',TextType::class)
...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Account'
));
}
我的控制器:
...
@Route("https://stackoverflow.com/users/{id}/edit")
...
public function EditAction(Request $request, User $user){
...
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
...
...
return $this->render("/pages/users/edit.html.twig",
["form"=>$form->createView()]
);
完全沒有錯誤,但形式不顯示任何的帳戶實體的字段。
i,e,. {{ form_row(accounts.username) }}
任何想法或幫助或指向我正確的方向將受到高度讚賞。
' - > add('accounts'.CollectionType :: class')有一個點,並且在第三個參數之前錯過了一個逗號 –
您的用戶當前是否有任何帳戶?需要至少一個 – Cerad
是的,這兩個表格中都有賬戶和/或數據 – iVoidWarranties