我在控制器中获取输入文本值时遇到问题。
这是我的AJAX脚本:
$(document).ready(function() {
$('#valider').click(function () {
var searchText = $('#searchText').val();
$.ajax({
type: "POST",
url: "/firstproject/web/app_dev.php/parc/searchmodel/"+searchText,
data:{'type':searchText},
success: function (response) {
console.log(response);
},
error: function (response,xhr,status) {
alert("erroe"+status);
}
});
});
});
这是我的 view.twig ,我有一个文字输入:
{% block javascripts %}
<script src="{{ asset('bundles/js/jquery.min.js') }}"></script>
<script src="{{ asset('bundles/js/script.js') }}"></script>
{% endblock %}
<input type="text" id="searchText" name="searchText" value=" "placeholder="search by libel">
<input id="valider" type="submit" value="valider">
<h1>La liste des modeles</h1>
<table border="1">
<tr>
<th>Id</th>
<th>Libelle</th>
<th>pays</th>
<th>modifier</th>
<th>supprimer</th>
</tr>
{% for m in mod %}
<tr>
<td>{{ m.id }}</td>
<td>{{ m.libelle}}</td>
<td>{{ m.pays }}</td>
<td>
<a href="{{ path('updatemodel',{'id':m.id}) }}">modifier</a>
</td>
<td><a href="{{ path('deletemodel',{'id':m.id}) }}">supprimer</a></td>
</tr>
{% endfor %}
</table>
这是我的控制器动作:
public function searchAction(Request $request){
$request->request->get('type');
dump($request);
$em = $this->getDoctrine()->getManager();
$modele = $em->getRepository("EspritParcBundle:Modele")
->searchbyLib($request);
return $this->render("EspritParcBundle:Modele:searchmodel.html.twig",array('mod'=>$modele));
}
这是我的自定义函数searchbylib
:
class ModeleRepository extends EntityRepository
{
public function searchbyLib($libele)
{
$em = $this->getEntityManager()
->createQuery('SELECT m FROM EspritParcBundle:Modele m
WHERE m.libelle LIKE :libele')
->setParameter('libele',$libele);
dump($em->getResult());
return $em->getResult();
}
}
最后,我的路由文件:
searchmodel:
path: /searchmodel/{type}
defaults: { _controller: EspritParcBundle:Modele:search}
这是我的输出:
在文本字段中输入“BMW”时,单击验证按钮,我希望它只显示BMW模型和要重定向的URL。
答案 0 :(得分:0)
view.html.twig
{% block javascripts %}
<script src="{{ asset('bundles/js/jquery.min.js') }}"></script>
<script src="{{ asset('bundles/js/script.js') }}"></script>
{% endblock %}
<form action="{{ path('searchmodel') }}" method="POST">
<input type="text" id="searchText" name="searchText" value=" "placeholder="search by libel">
<input id="valider" type="submit" value="valider">
</form>
<h1>La liste des modeles</h1>
<table border="1">
<tr>
<th>Id</th>
<th>Libelle</th>
<th>pays</th>
<th>modifier</th>
<th>supprimer</th>
</tr>
{% for m in mod %}
<tr>
<td>{{ m.id }}</td>
<td>{{ m.libelle}}</td>
<td>{{ m.pays }}</td>
<td>
<a href="{{ path('updatemodel',{'id':m.id}) }}">modifier</a>
</td>
<td><a href="{{ path('deletemodel',{'id':m.id}) }}">supprimer</a></td>
</tr>
{% endfor %}
</table>
路由文件:
searchmodel:
path: /searchmodel
defaults: { _controller: EspritParcBundle:Modele:search}
控制器:
public function searchAction(Request $request){
$request = $request->get('type');
$em = $this->getDoctrine()->getManager();
$modele = $em->getRepository("EspritParcBundle:Modele")
->searchbyLib($request);
return $this->render("path:to:view.html.twig",array('mod'=>$modele));
}
答案 1 :(得分:0)
$ type参数通过查询字符串
传递searchmodel:
path: /searchmodel/{type}
defaults: { _controller: EspritParcBundle:Modele:search}
所以你可以直接将它添加到方法的参数中,如下所示:
public function searchAction(Request $request, $type)
{
$em = $this->getDoctrine()->getManager();
$modele = $em->getRepository("EspritParcBundle:Modele")
->searchbyLib($request);
return $this->render("path:to:view.html.twig",array('mod'=>$modele));
}
这对你有帮助吗?
答案 2 :(得分:0)