First , sorry for my english... So i want to make a request to show my article by category. But each time i just get my own error. So my controller is :
public function categorieAction($slug,$page)
{
if ($page < 1) {
throw new NotFoundHttpException('Page "'.$page.'" inexistante.');
}
$nbPerPage = 5;
$listArticles = $this->getDoctrine()
->getManager()
->getRepository('OAHNewsBundle:Article')
->getAvecCategories($slug, $page, $nbPerPage)
;
$nbPages = ceil(count($listArticles)/$nbPerPage);
if ($page > $nbPages) {
throw $this->createNotFoundException("La page ".$page." n'existe pas.");
}
return $this->render('OAHNewsBundle:News:categorie.html.twig',array(
'listArticles' => $listArticles,
'nbPages' => $nbPages,
'page' => $page
));
}
My repository :
public function getAvecCategories ($page ,$slug, $nbPerPage )
{
$query = $this -> createQueryBuilder ('a')
->leftjoin ( 'a.categories' , 'c' )
->addselect('c')
->where('c.slug = :slug')
->setParameter('slug', $slug)
->leftjoin('a.image', 'i')
->addselect('i')
->orderBy('a.date', 'DESC')
->getQuery()
;
$query
->setFirstResult(($page-1) * $nbPerPage)
->setMaxResults($nbPerPage)
;
return new Paginator($query, true);
}
}
My route :
OAHNews_categorie:
path: /categorie/{slug}/{page}
defaults: { _controller: OAHNewsBundle:News:categorie , page: 1 }
requirements:
page: \d*
And the error i get :
if ($page > $nbPages) {
throw $this->createNotFoundException("La page ".$page." n'existe pas.");
}
The view :
{% extends "OAHNewsBundle::OAH_layout.html.twig" %}
{% block title %} {{ parent() }} - Index{% endblock %}
{% block body_news %}
{% for article in listArticles %}
<div class="article_des_news">
<div class="row">
<div class="col-sm-3">
<a href="{{path('OAHNews_voir', {'slugarticle':article.slugarticle})}}"><img src='{{ asset(article.image.webPath) }}' alt="{{ article.image.alt}}"/></a>
</div>
<div class="col-sm-9">
<a class="titre_article" href="{{path('OAHNews_voir', {'slugarticle':article.slugarticle})}}">{{article.titre}}
</a>
<p><i class="glyphicon glyphicon-pencil"></i> par {{article.auteur}},
<i class="glyphicon glyphicon-time"> </i> {{article.date|date('d/m/y')}}
{% if not article.categories.empty %}
<i class="glyphicon glyphicon-tag"> </i>
{% for categorie in article.categories %}
{{ categorie.nom }}{% if not loop.last %}, {% endif %}
{% endfor %}
{% endif %}
</p>
{{ article.contenu|truncate(100, false, "...")}}
</div>
</div>
</div>
{% endfor %}
<ul class="pagination pull-right">
{# On utilise la fonction range(a, b) qui crée un tableau de valeurs entre a et b #}
{% for p in range(1, nbPages) %}
<li{% if p == page %} class="active"{% endif %}>
<a href="{{ path('OAHNews_accueil', {'page': p}) }}">{{ p }}</a>
</li>
{% endfor %}
</ul>
{% endblock %}
and the link i use :
<ul class="nav nav-pills nav-stacked">
{% for categorie in listCategories %}
<li class='menu'>
<a class="titre_article normalLink" href="{{ path('OAHNews_categorie', {'slug': categorie.slug}) }}">
{{ categorie.nom }}
</a>
</li>
{% endfor %}
</ul>
So what's wrong with my request? Thank you !