Formulaire imbriqué à relation multiple
Bonsoir,
J'essaye de mettre en place un formulaire imbriqué à relations multiples, voici la configuration du modèle;
Une table User et une table Role liées en ManyToMany ()donc une table de transition user_role généré par Symfony2).
Le but est d'afficher un formulaire ajoutant un User avec un Role associé (si possible de pouvoir lister ceux en base et proposer un choix via une checkbox mais je verrai ca par la suite).
J'ai donc modifier mon UserType.php comme suit (le champ commenté a été généré automatiquement par crud):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
use Doctrine\Common\Collections\ArrayCollection;
use Perso\UserBundle\Form\RoleType;
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('login')
->add('password')
->add('salt')
->add('prenom')
->add('nom')
->add('email')
->add('tel')
//->add('userRoles')
->add('usersRoles', 'collection', array('type' => new RoleType));
;
}
public function getName()
{
return 'perso_userbundle_usertype';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Perso\UserBundle\Entity\User',
);
}
} |
Et voici mon controller simplifié au niveau du traitement du formulaire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class AuthController extends Controller
{
public function registerAction()
{
$request = $this->getRequest();
$form = $this->createForm(new UserType());
if ($request->getMethod() == "POST")
{
$form->bindRequest($request);
if ($form->isValid())
{
$user = $form->getData();
$em = $this->getDoctrine()->getEntityManager();
$em->persist($user);
foreach ($user->getRoles() as $role)
$em->persist($role);
$em->flush();
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('PersoMainBundle:Admin:register.html.twig', array('form' => $form->createView()));
}
} |
Avec ces deux persist, la table user_role va t-elle se mettre à jour automatiquement ?
Sinon le problème que je rencontre, c'est que d'après le tuto que je suis, je suis censé trouvé une div généré par Symfony 2 dans le code source de ma page, ayant pour id quelque chose comme "<div id="perso_userbundle_usertype_roles">" et un "data-prototype=", je retrouve bien cette div vide pour cet id mais le problème est que je n'ai pas ce fameux "data-prototype=", voici mon code:
Code:
1 2 3 4 5
|
<div>
<label class=" required">Usersroles</label>
<div id="perso_userbundle_usertype_usersRoles"></div>
</div> |
Pourtant sur mon template, j'ai bien les champs de mon User qui s'affichent dans le formulaire, et un 'UsersRoles' à la fin.
Quelle étape ais-je pu louper pour ne pas trouvé cette div dans ma page ? Merci !