2016-06-21 7 views
0

これが私の状況です:私はsymfonyとブートストラップを使用していると私は、この入力テキストフィールドを持っている:ルートにパラメータとして入力を送信する方法は? symfonyの-ブートストラップ

<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-> get( 'inputData'); $ inputDataにはnull値があります。何か案は? – Gand

+0

コントローラとビューのコードを投稿できますか? –

0

あなたは、フロントエンドの操作なしでこれを行うことはできません。

まず、サーバは、あなたがそれをコード化されてきた方法であなたのコード/テンプレート/ページを出力し、だけにして、ユーザーが入力フィールドに何かを入力します。現時点では、基本的にJavaScriptであるフロントエンド/ブラウザ処理のみが可能です。

はつまり、あなたのテンプレートでそれをコーディングしようとしないので、フィールドの後に見て、何かを入力した場合、あなたのボタン、HREFに渡しますイベント、...

を作成する必要がありますphp/htmlを使用します。スクリプトを使用すると、ページが読み込まれた後に動作します。 Gerardo Soriano答えの例を参照してください。

0

あなたのケースでは、機能のクリックがあなたのニーズに合わないと思います。これを試してみてください: $( '#cantidad')。focusout(function(){//すべてが同じままです}); ユーザーがデータを入力して他の場所をクリックした後にフォーカスアウトが呼び出されると思います。 それが動作するかどうか教えてください

+0

まだ同じです。また、フォーカスアウト部分には「未解決の関数またはメソッドのfocusout()」と書かれています – Gand

関連する問題