【发布时间】:2017-03-02 09:28:41
【问题描述】:
我的controller 中有一个function,可以让我编辑餐厅页面。
我需要setData 一些值,以便将它们从显示视图保留到编辑视图,并且我需要在city 和zipCode 字段上使用它。
$editForm->get('cityName')->setData($restaurant->getCity()->getName());
$editForm->get('cityZipCode')->setData($restaurant->getCity()->getZipCode());
但是当我使用 setData 时,我无法再编辑我的表单,因为出现此错误消息
You cannot change the data of a submitted form.
这里是控制器部分
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(),
));
}
这里是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'
))
}
如果您有任何可以帮助我并解决该问题的方法,我们将不胜感激。
【问题讨论】:
标签: forms controller symfony