有点熟悉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