2015-07-17 8 views
0

У меня есть действие, но когда я отправить данные, у меня естьSymfony2 Request-URI Too Long

Request-URI Too Long. Длина Запрашиваемый URL превышает предел мощности для этого сервера

public function addAction(Request $request) 
{ 
    $productGallery = new ProductGallery(); 
    $product = new Product(); 
    $productGallery->addProductgalleryToProduct($product); 
    $form = $this->createForm(new ProductGalleryType(), $productGallery); 
    if($request->isMethod('POST')) 
    { 
     $form->handleRequest($request); 
     if($form->isValid()) 
     { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($productGallery); 
      $em->persist($product); 
      $em->flush(); 

      return $this->redirectToRoute('addAction', array('form' => $form->createView())); 
     } 
    } 
    return array(
     'form' => $form->createView() 
    ); 
} 

Как я могу фиксированной это? Что я делаю неправильно?

п.с. моя коллекция форма

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('productgallery_to_product', 'collection', array(
      'type'   => new ProductType(), 
      'allow_add'  => true, 
      'by_reference' => false, 
      'allow_delete' => true, 
      'prototype'  => true 
     )) 
    ; 
} 

NEW INFO

Метод 'POST' В моей URL

http://trololo.com/app_dev.php/add?form%5Bvars%5D%5Bid%5D=games_modelbundle_productgallery&form%5Bvars%5D%5Bname%5D=games_modelbundle_productgallery&form%5Bvars%5D%5Bfull_name%5D=games_modelbundle_productgallery&form%5Bvars%5D%5Bdisabled%5D=0&form%5Bvars%5D%5Bmultipart%5D=1&form%5Bvars%5D%5Bblock_prefixes%5D%5B0%5D=form&form%5Bvars%5D%5Bblock_prefixes%5D%5B1%5D=games_modelbundle_productgallery&form%5Bvars%5D%5Bblock_prefixes%5D%5B2%5D=_games_modelbundle_productgallery&form%5Bvars%5D%5Bunique_block_prefix%5D=_games_modelbundle_productgallery&form%5Bvars%5D%5Bcache_key%5D=_games_modelbundle_productgallery_games_modelbundle_productgallery&form%5Bvars%5D%5Bread_only%5D=0&form%5Bvars%5D%5Bvalid%5D=1&form%5Bvars%5D%5Brequired%5D=1&form%5Bvars%5D%5Bcompound%5D=1&form%5Bvars%5D%5Bmethod%5D=POST&form%5Bvars%5D%5Baction%5D=&form%5Bvars%5D%5Bsubmitted%5D=1&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bid%5D=games_modelbundle_productgallery_productgallery_to_product&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bname%5D=productgallery_to_product&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bfull_name%5D=games_modelbundle_productgallery%5Bproductgallery_to_product%5D&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bdisabled%5D=0&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bmultipart%5D=1&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bblock_prefixes%5D%5B0%5D=form&form%5Bchildren%5D%5Bproductgallery_to_product%5D%5Bvars%5D%5Bblock_prefixes%5D%5B1%5D=collection&form%5Bchildren%5D%5Bprodu .....

+0

Какой URI он запрашивает? И отправляете ли вы свою форму, используя «GET», а не «POST», случайно? – qooplmao

+0

@Qoop update question –

+0

@Qoop есть идеи? –

ответ

2

Вы передача объекта всей формы в URL:

$this->redirectToRoute('addAction', array('form' => $form->createView())); 

Второй аргумент redirectToRoute() - это список параметров GET для отправки с запросом.

Это делает ваш URL ОЧЕНЬ длинным. Он превышает лимит веб-сервера, который, в свою очередь, отказывается обрабатывать запрос.

Ваш вызов должен выглядеть следующим образом:

$this->redirectToRoute('addAction'); 

Кроме того, первый аргумент метода redirectToRoute() это название маршрута, а не имя метода действия. Замените его, если ваше имя маршрута не является «addAction».

Подробнее о документации Controller chapter.

+0

Да, ты прав, чувак. спасибо –