Recuperer une entity en se basant sur les donnees soumises d'un formulaire
Bonjour a tous
j'ai un problem qui semble etre facile a resoudre mais bien difficile pour moi: je dispose d'une entity Category avec un attribut "name" et de son formulaire CategoryType une fois afficher le formulaire, remplie et soumi, je voudrais selectionner les entities de la classe Service (pour construire un autre formulaire plustard mais pas important pour l'instant....) qui est en relation ManyToOne avec Category voila. J'avais procede comme cela:
l'action de mon controller:
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
|
public function preRegistrationAction()
{
$category = new Category;
$form = $this->createForm(new CategoryType, $category);
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
if($request->getMethod()=='POST'){
$form->bind($request);
$category = $form->getData();
$categoryName = $category->getName();
//throw $this->createNotFoundException($categoryName);
$categoryId = $em->getRepository('MpkCmsBundle:Category')->findOneBy(array('name' => $categoryName));
$services = $em->getRepository('MpkCmsBundle:Service')->findByCategory2($categoryId);
return $this->render('MpkCmsBundle:Cms:index.html.twig', array('services' => $services,
'categoryId' => $categoryId,));
throw $this->createNotFoundException($category->getName());
return $this->redirect($this->generateUrl('mpk_cms_company_registration',
array('category_id' => $categoryId)));
}
return $this->render('MpkCmsBundle:Default:index.html.twig',
array('form' => $form->createView()));
} |
mon CategoryType.php
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 34 35 36 37 38 39 40 41 42 43 44
|
<?php
namespace Mpk\CmsBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class CategoryType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'entity', array('class' => 'Mpk\CmsBundle\Entity\Category',
'placeholder' => '',
'property' => 'name',))
->add('save', 'submit')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Mpk\CmsBundle\Entity\Category'
));
}
/**
* @return string
*/
public function getName()
{
return 'mpk_cmsbundle_category';
}
} |
le problem est que je recupere bien la donnee soumise du formulaire et verifie qu'elle existe mais je n'arrive pas a l'utiliser comme parametre pour recuperer mon $idCategory comme ceci:
Code:
1 2
|
$categoryId = $em->getRepository('MpkCmsBundle:Category')->findOneBy(array('name' => $categoryName)); |