I'm trying to extract some code to a private function inside a controller in order to tidy it up a bit, but the function seems not to run.
Route:
Route::resource('posts', 'PostsController');
When I GET the following URL:
/posts?page=2&posts_per_page=3&published=0
It ignores the page and posts_per_page variables (i.e. it just returns the first 10 unpublished results) But when I had this code inside the index
method it worked.
public function index()
{
// set defaults for page number and posts per page
$page = 1;
$postsPerPage = 10;
$published = 1;
$this->getPagesAndPostsPerPage($page, $postsPerPage);
// Get published or not
// Not published = 0
// Published = 1
if ( Input::has('published') )
{
$published = Input::get('published');
}
// return paginated results
$skip = ($page - 1) * $postsPerPage;
$posts = Post::where('published', '=', $published)
->orderBy('published_date', 'desc')
->skip($skip)
->take($postsPerPage)
->get();
return Response::json([
'data' => $this->transformCollection($posts)
], 200);
}
// Get pages and posts per page
private function getPagesAndPostsPerPage($page, $postsPerPage)
{
// if posts per page and page are defined
if ( Input::has('posts_per_page') && Input::has('page') )
{
// get inputs
$postsPerPage = Input::get('posts_per_page');
$page = Input::get('page');
}
// else if just page is defined
elseif ( Input::has('page') )
{
$page = Input::get('page');
}
}
Can anyone see what I'm doing wrong?