2016-06-21 2 views
0

Это моя ситуация: Я использую Symfony и Bootstrap и у меня есть это текстовое поле ввода:Как отправить вход в качестве параметра в маршрут? Symfony-Bootstrap

<div class="col-xs-3"> 
    <input type="text" class="form-control" id="amount" placeholder="Max amount"> 
</div> 

Что я хочу сделать, это отправить то, что человек пишет в этой области, как параметра к этому маршруту:

<a href="{{ path('_filtered') }}" class="btn bg-danger">Filter</a> 

Как я могу это сделать? Я пробовал это сделать:

<a href="{{ path('_filtered', {'parameter': amount}) }}" class="btn bg-danger">Filter</a> 

количество, являющееся входным ID. Но это не сработает, и после поиска часов я не мог найти решение, поэтому любая помощь будет оценена! Спасибо.

Обновление: HTML:

{% extends '::base.html.twig' %} 


{% block panelhead %} 
Publicaciones<br> 
{% if is_granted('ROLE_USER') %} 
    <a href="{{ path('_altaPubli') }}" class="btn btn-primary">Agregar Publicacion</a> 
    <div class="col-xs-3"> 
     <input type="text" class="form-control" id="cantidad" placeholder="Maximo personas"> 
    </div> 
    <div class="col-xs-3"> 
     <input type="text" class="form-control" id="coste" placeholder="Maximo coste"> 
    </div> 
    <div class="form-group"> 
     <label for="sel1">Pais:</label> 
     <select class="selectpicker" id="sel1"> 
    {% for publicacion in publicaciones %} 
      <option>publicacion.pais</option> 
    {% endfor %} 
     </select> 
     <label for="sel2">Provincia:</label> 
     <select class="selectpicker"> 
    {% for publicacion in publicaciones %} 
      <option>publicacion.provincia</option> 
    {% endfor %} 
     </select> 
     <label for="sel3">Localidad:</label> 
     <select class="selectpicker"> 
      {% for publicacion in publicaciones %} 
      <option>publicacion.localidad</option> 
      {% endfor %} 
     </select> 
    </div> 
{% endif %} 
<a href="{{ path('_filtradas') }}" class="btn bg-danger" id="2">Filtrar</a> 
<script> 
    $(document).ready(function() { 
     $('#cantidad').click(function() { 
      var inputData= $('#cantidad').val(); 
      $.ajax({ 
       type: 'GET', 
       url: "{{path('_filtradas')}}", 
       data: { 
        'inputData': inputData, 
       }, 
      }); 
     }); 
    }); 
</script> 
{% endblock %} 

{% block panelbody %} 
<tbody> 
<div class="row-fluid"> 
    {% for publicacion in publicaciones %} 

     <div class="col-md-4"> 
      <div class="mark-pers"> 
       <div class="text-center"> 
        <div> 
         <img src="{{ asset('uploads/fotos/' ~ publicacion.path) }}" width="240" height="160"/> 
        </div> 

        {{ publicacion.usuario }} 
        <a href="{{ path('_mostrarPublicacion', {'id': publicacion.id}) }}">{{ publicacion.descripcion }}</a></td> 
        {% if is_granted('ROLE_USER') %} 

         {% if publicacion.usuario.id == user.id %} 
          <a href="{{ path('_modificarPublicacion', {'id': publicacion.id}) }}" class="glyphicon glyphicon-edit"></a> 
         {% endif %} 
         {% if publicacion.usuario.id == user.id or is_granted('ROLE_ADMIN') %} 
          <a href="{{ path('_eliminarPublicacion', {'id': publicacion.id}) }}" class="glyphicon glyphicon-erase"></a> 
         {% endif %} 
         <br/> 
        {% endif %} 
       </div> 
      </div> 
     </div> 

    {% endfor %} 
</div> 
</tbody> 
{#</table>#} 
{% endblock %} 

Контроллер:

/** 
* Lists all Publicacion entities. 
* @Route("/home/publicacionesFiltradas", name="_filtradas") 
*/ 
public function filtrar(Request $request) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $publicaciones = $em->getRepository('AppBundle:Publicacion')->findAll(); 
    $inputData = $request->get('inputData'); 
    dump($inputData); 
    return $this->render(':default/publicacion:publicacionesFiltradas.html.twig', array(
     'publicaciones' => $publicaciones, 
     'user' => $this->getUser(), 
     'cantidad' => $inputData, 
    )); 
} 

ответ

0

Я хотел бы сделать что-то вроде этого:

$(document).ready(function(){ 
// Get your data to be sent as a parameter 
var inputData= $('#amount').val(); 

    $.ajax({ 
      type: 'POST', // It can either be POST or GET depending on what you want to do. 
      url: "{{path('_filtered')}}", 
      data: { 
       'inputData': $inputData,    
      }, 
      success: function(msg){ 
      // Perform your actions here. 
      }, 

     }); 

});

и в контроллере я хотел бы получить эти данные:

$inputData = $request->get('inputData'); 

Надеется, что это помогает!

+0

Кстати, код, в котором вы получаете данные, должен находиться внутри события. $ ('# amount) .click (function() {// получить данные здесь}): –

+0

Это очень помогло, спасибо большое, но у меня возникла проблема: после $ inputData = $ request-> получить ('inputData'); $ inputData имеет нулевое значение. Есть идеи? – Gand

+0

Можете ли вы опубликовать код контроллера, а также представление? –

0

Вы не можете сделать это без фронтальными манипуляций:

Во-первых, сервер выдает код/​​шаблон/страницы так, как вы кодированный его, и только после этого пользователь вводит что-то в поле ввода. В это время возможно только управление интерфейсом/браузером, что в основном является JavaScript.

Таким образом, вы должны создать событие, которое будет выглядеть после того, как поле, и если что-то будет введено, передать его вам кнопку, HREF ...

Так, не пытайтесь его кода в шаблоне с php/html. Используйте скрипт, который будет работать после загрузки страницы. См. Gerardo Soriano ответ на пример.

0

В вашем случае я считаю, что функция щелчка не соответствует вашим потребностям. Попробуйте следующее: $ ('# cantidad'). Focusout (function() {// Все остается неизменным}); Я думаю, что фокус будет вызываться после ввода пользователем некоторых данных и щелчков в другом месте. Сообщите мне, если это работает

+0

По-прежнему то же самое. И часть фокусировки говорит: «Неразрешенная функция или метод focusout()» – Gand

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