Ich habe eine function
in meinem controller
, die mich eine Restaurantseite bearbeiten lassen kann.Kann ein Formular nicht bearbeiten, wo "setData" festgelegt wurde - Symfony3
Ich brauchte setData
einige Werte, um sie von der angezeigten Sicht auf die Bearbeitungsansicht zu halten, und ich brauchte es auf dem city
und zipCode
Feld.
$editForm->get('cityName')->setData($restaurant->getCity()->getName());
$editForm->get('cityZipCode')->setData($restaurant->getCity()->getZipCode());
Aber ich kann nicht mehr meine Form bearbeiten, wenn ich setData
verwendet, da diese Fehlermeldung erscheint, ist
You cannot change the data of a submitted form.
Hier ist der Controller Teil
public function editAction(Request $request, Restaurant $restaurant)
{
$deleteForm = $this->createDeleteForm($restaurant);
$editForm = $this->createForm(RestaurantType::class, $restaurant);
$editForm->handleRequest($request);
$editForm->get('cityName')->setData($restaurant->getCity()->getName());
$editForm->get('cityZipCode')->setData($restaurant->getCity()->getZipCode());
if ($editForm->isSubmitted() && $editForm->isValid()) {
$em = $this->getDoctrine()->getManager();
$cityManager = $this->container->get('admin.city_manager');
$cityManager->newCity($editForm, $restaurant);
$em->flush();
return $this->redirectToRoute('admin_restaurant_show_fr', array('id' => $restaurant->getId()));
}
return $this->render('admin/restaurant/edit.html.twig', array(
'restaurant' => $restaurant,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
));
}
und hier ist die FormType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, array(
'label' => 'Nom',
))
->add('latitude', NumberType::class, array(
'label' => 'Latitude',
))
->add('longitude', NumberType::class, array(
'label' => 'Longitude',
))
->add('address', TextType::class, array(
'label' => 'Adresse',
))
->add('cityName', TextType::class, array(
'mapped' => false,
'label' => 'Ville'
))
->add('cityZipCode', TextType::class, array(
'mapped' => false,
'label' => 'Code Postal'
))
}
Wenn Sie etwas haben, das mir helfen und dieses Problem beheben könnte, würde es sehr geschätzt werden.
Hallo @Rooneyl danke für Ihren Kommentar. Ich habe 'FormEvents' gesehen, aber ich bin ziemlich neu und ich weiß nicht wirklich, wie ich das mit Formevents beheben kann. Was meinst du mit 'ammend the forw to show ...' wenn du willst, kann ich den Formularabschnitt zu meiner Frage hinzufügen, wenn du ihn sehen willst? –
@crisscross können Sie den Teil des Formular-Codes hinzufügen, der den Namen/Code der Stadt erstellt, und ich werde versuchen, Ihnen zu helfen – Rooneyl
Ich habe das Formular hinzugefügt, danke für Ihre Hilfe :) –