Sto provando a impostare un valore selezionato all'interno di un campo entità. In accordo con molte discussioni che ho visto su questo argomento, ho cercato di impostare l'opzione data
ma questo non seleziona uno dei seguenti valori di default:Symfony2 - Imposta un valore selezionato per il campo entità
class EventType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('place', 'entity', array(
'class' => 'RoyalMovePhotoBundle:Place',
'property' => 'name',
'empty_value' => "Choisissez un club",
'mapped' => false,
'property_path' => false,
'data' => 2
))
->add('begin')
->add('end')
->add('title')
->add('description')
;
}
// ...
}
In cerca di più ho scoperto che alcuni le persone dovevano disattivare la mappatura del modulo all'entità. Che sembra logico quindi ho provato ad aggiungere 'mapped' => false
alle opzioni, ma senza successo ...
Se può aiutare, ecco il mio controller:
class EventController extends Controller
{
// ...
public function addAction()
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$event = new Event();
$form = $this->createForm(new EventType(), $event);
$formHandler = new EventHandler($form, $request, $em);
if($formHandler->process()) {
$this->get('session')->getFlashBag()->add('success', "L'évènement a bien été ajouté.");
return $this->redirect($this->generateUrl('photo_event_list'));
}
return $this->render('RoyalMovePhotoBundle:Event:add.html.twig', array(
'form' => $form->createView()
));
}
}
E la classe EventHandler
:
class EventHandler extends AbstractHandler
{
public function process()
{
$form = $this->form;
$request = $this->request;
if($request->isMethod('POST')) {
$form->bind($request);
if($form->isValid()) {
$this->onSuccess($form->getData());
return true;
}
}
return false;
}
public function onSuccess($entity)
{
$em = $this->em;
$em->persist($entity);
$em->flush();
}
}
Sono un po 'bloccato in questo momento, c'è qualcuno che ha un'idea?
Non ricordo davvero, ma penso di aver già provato questo prima, senza successo. Beh, accetterò questo come una risposta dato che al momento non riesco a provare la soluzione (non sto più lavorando a questo progetto), sembra essere il modo più logico. – Nesk