Aufruf von privaten Funktion von laravel-controller

Ich versuche zu extrahieren einige code eine private Funktion in einem controller, damit tidy es ein wenig, aber die Funktion scheint nicht zu laufen.

Route:

Route::resource('posts', 'PostsController');

Wenn ich die folgende URL:

/posts?page=2&posts_per_page=3&published=0

Er ignoriert die Seite und posts_per_page Variablen (d.h. es gibt nur die ersten 10 unveröffentlichte Ergebnisse), Aber wenn ich hatte diesen code innerhalb der index Methode hat es geklappt.

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');
    }
}

Kann jemand sehen, was ich falsch mache?

  • Alles was ich sagen kann ist, dass Sie unter der Annahme, dass die private Methode Anwendungsbereich Lecks zurück in den aufrufenden Bereich. Das heißt, Sie scheinen anzunehmen, dass die Einstellung $Seite in der private-Methode legt es in die index-Methode. Es bedeutet nicht, sollten Sie entweder wieder den Wert von $Seite (wenn Sie nur über eine variable) oder einige Eigenschaften der Klasse wie $this->page = $page in der privaten Methode.
  • Wie bekommen Sie die url? Post von der Strecke, bekommt Beiträge in routes.php
  • Lohnt es sich wahrscheinlich, mir zu sagen, dass dies nicht Laravel-spezifisch. Es definiert Verhalten in PHP (und so ziemlich jeder anderen Programmiersprache mit Funktionen und Variablen-scopes), dass die Variablen innerhalb einer Funktion nicht Auslaufen zurück an die aufrufende Funktion Umfang zu.
  • Vielen Dank für die Hilfe Jungs. @marcanuy, ich habe die route.
InformationsquelleAutor babbaggeii | 2014-03-14
Schreibe einen Kommentar