这是我的情况:我使用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 :(得分: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');
希望它有所帮助!
答案 1 :(得分:0)
你不能在没有前端操作的情况下这样做:
首先,服务器按照您编码的方式输出您的代码/模板/页面,然后只有用户在输入字段中输入内容。目前只能进行前端/浏览器处理,基本上是JavaScript。
所以你必须创建一个事件,它将关注该字段并输入一些内容,将其传递给你的按钮,href ...
因此,不要尝试使用php / html在模板中对其进行编码。使用脚本,在加载页面后将起作用。有关示例,请参阅 Gerardo Soriano 答案。
答案 2 :(得分:0)
在您的情况下,我认为功能点击不符合您的需求。试试这个: $('#cantidad')。focusout(function(){//一切都保持不变}); 我认为,在用户输入一些数据并在其他地方点击之后,将调用焦点。 让我知道它是否有效