Fix #1551 - Redirect to the last page when current page is out of range

This commit is contained in:
Maxime LECLERCQ 2016-02-19 14:22:27 +01:00
parent fa64d86110
commit 671a2b887f
2 changed files with 19 additions and 1 deletions

View file

@ -3,6 +3,7 @@
namespace Wallabag\CoreBundle\Controller;
use Pagerfanta\Adapter\DoctrineORMAdapter;
use Pagerfanta\Exception\OutOfRangeCurrentPageException;
use Pagerfanta\Pagerfanta;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@ -252,7 +253,13 @@ class EntryController extends Controller
$entries = new Pagerfanta($pagerAdapter);
$entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
$entries->setCurrentPage($page);
try {
$entries->setCurrentPage($page);
} catch (OutOfRangeCurrentPageException $e) {
if ($page > 1) {
return $this->redirect($this->generateUrl($type, array('page' => $entries->getNbPages())), 302);
}
}
return $this->render(
'WallabagCoreBundle:Entry:entries.html.twig',

View file

@ -216,6 +216,17 @@ class EntryControllerTest extends WallabagCoreTestCase
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
public function testRangeException()
{
$this->logInAs('admin');
$client = $this->getClient();
$client->request('GET', '/all/list/900');
$this->assertEquals(302, $client->getResponse()->getStatusCode());
$this->assertEquals('/all/list', $client->getResponse()->getTargetUrl());
}
/**
* @depends testPostNewOk
*/