0
我有一个表'内容',您可以为您的内容分配类别。Ajax搜索过滤器
class Content
{
private $name;
private $categories;
...
...
...
public function __construct()
{
$this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addCategories(\Publicartel\AppBundle\Entity\Category $categories)
{
$this->categories[] = $categories;
return $this;
}
public function removeCategories(\Publicartel\AppBundle\Entity\Category $categories)
{
$this->categories->removeElement($categories);
}
public function setCategories(\Publicartel\AppBundle\Entity\Category $categories = null)
{
$this->categories = $categories;
return $this;
}
public function getCategories()
{
return $this->categories;
}
}
然后我做了一个查询来查找所有类别并将它们显示在页面上。
$categories = $em->getRepository('PublicartelAppBundle:Category')->getAllCategories();
public function getAllCategories()
{
$em = $this->getEntityManager();
$dql = 'SELECT c FROM Publicartel\AppBundle\Entity\Category c';
$query = $this->getEntityManager()
->createQuery($dql)
->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);
return $query->execute();
}
显示模板树枝中的所有分类。
<div class="form-group">
<label for="publicartel_appbundle_category_name">Buscar por categoría:</label>
<select id='selectCategory' class="form-control select2">
{% for categories in categories %}
<option>
{{ categories.name }}
</option>
{% endfor %}
</select>
</div>
我分配了一个句柄来选择显示类别,从ajax中传递select中的值。
我有一个功能来检测选择选项中的变化。
保存选择值传递给所述控制器来执行查询:
$('#selectCategory').change(function() {
var optionSelect = $(this).val();
console.log(optionSelect);
$.ajax({
url: '{{path('playlist_new') }}',
data: '&category='+optionSelect,
type: 'POST',
success: function(catContent) {
{% for contentCategory in catContent %}
var nameContent = '{{ contentCategory.name }}';
console.log(nameContent);
{% endfor %}
$('playlist_content_name').html(nameContent);
},
error: function(e){
console.log(e.responseText);
}
});
});
$category = $request->query->get('category');
$catContent = $em->getRepository('PublicartelAppBundle:Content')->findByCategory($category);
return $this->render('PublicartelAppBundle:Playlist:new.html.twig', array(
'catContent' => $catContent,
'categories' => $categories,
'entity' => $entity,
'form' => $form->createView(),
));
显示从所选类别中的内容的查询:
public function findByCategory($category)
{
$em = $this->getEntityManager();
$dql = 'SELECT c FROM Publicartel\AppBundle\Entity\Content c';
if (!is_null($category)) {
$dql .= " WHERE c.categories.name LIKE :category";
}
$query = $this->getEntityManager()
->createQuery($dql)
->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);
if (!is_null($category)) {
$query->setParameter('category', '%'.$category.'%');
}
return $query->getResult();
}
但是控制台总是示出了相同的结果,但在我的选择中选择不同的选项。
是选择您选择的选项,始终显示相同的结果。