2015-04-06 5 views
-1

У меня проблема с моим поиском, возможно, я не понимаю принципа. Поэтому у меня есть метод, показывающий продукты по категориям, и я добавил поиск на эту страницу для продуктов фильтра по цене. Мой метод:Получить данные из формы в symfony2

public function showCategoryAction($id, $page){ 
    $em = $this->getDoctrine()->getManager(); 
    $repositoryProduct = $em->getRepository('ShopDesktopBundle:Product'); 

    $aFilter = array(); 
    $form = $this->get('form.factory')->createNamedBuilder('search', 'form', null, array(
     'csrf_protection' => false, 
      ))->setMethod('GET') 
       ->add('minimPrice', 'text') 
       ->add('maxPrice', 'text') 
     ->getForm(); 
    $request = $this->getRequest(); 
    $form->handleRequest($request); 
    $data = $form->getData(); 
    print_r($data); 

    //Search products 
    $aProducts   = $repositoryProduct->getProductsOrderByDateDesc($id,null,$aFilter); 
    if (!$aProducts) { 
     throw $this->createNotFoundException('Products not found.'); 
    } 

    $category = $em->getRepository('ShopDesktopBundle:Category')->findOneById($id); 
    if (!$category) { 
     throw $this->createNotFoundException('Category not found.'); 
    } 
    //Create pagination 
    $paginator = $this->get('knp_paginator'); 
    $pagination = $paginator->paginate(
     $aProducts, 
     $page, 
     3 
    ); 

    //Send data to view 
    return $this->render('ShopDesktopBundle:Category:category.html.twig',array(
     'category'   => $category, 
     'pagination'  => $pagination, 
     'form' => $form->createView() 
    )); 
} 

Мое мнение:

<form action="{{ path('show_product_category',{ 'id':category.getId(), 'name':category.getCategoryLink() }) }}" method="get" {{ form_enctype(form) }}> 
{{ form_widget(form) }} 
<input type="submit" class="btn btn-primary marg-left-20" value="Search"/> 
        </form> 

Проблема заключается в том, что мой $ вар пуст. Помоги мне, пожалуйста. Что я делаю неправильно? Thx заблаговременно

+0

Вы должны handleRequest с $ формы, чтобы получить данные в нем, проверьте Symfony документации – Svetoslav

ответ

0

Если я понял, что это может быть дорога. Сначала вам нужно обработать заявку на форму, затем вы можете получить данные для полей формы.

// You need your controller to pass the request 
$form->handleRequest($request); 

if ($form->isValid()) { 
    //Get data from the form and query against the database 
    //Render results to template 
} else { 
    //Form is not submitted or not valid 
} 

http://symfony.com/doc/current/book/forms.html#handling-form-submissions

Update: После многих часов в чате и, наконец, некоторые удаленной работы с TeamViewer. Оказалось, что Nginx был неправильно сконфигурирован и удалил параметры строки запроса.

Этот ответ установлен на нашей проблеме. https://stackoverflow.com/a/21484481/3399234

location/{ 
    # try_files $uri $uri/ /index.php; 
    try_files $uri $uri/ /index.php$is_args$args; 
} 
+0

Я редактировал вопрос по добавить запрос на $, но переменные: $ данные также являются пустым – TanGio

+0

я побежал же код на моей собственной среде Symfony 2.5, и все в порядке. Поскольку в документации указано метод handleRequest, введенный в Symfony 2.3, он должен работать теоретически. Ваша форма использования метода GET, вы видите параметры в URL-адресе после отправки? Например:% 5BminimPrice% 5D = 5 & search% 5BmaxPrice% 5D = 10 – Ugur

+0

Да, я вижу в URL-адресе:? MinimPrice = 0 & maxPrice = 40 – TanGio

Смежные вопросы