2017-06-14 2 views
0

Ich möchte auf eine Anfragevariable vom Konstruktor meines Controllers in Laravel zugreifen. Wie kann ich das machen?Wie Übergeben POST-Anfrage an Konstruktor in Laravel?

dies ist mein Weg:

Route::post('bookGetById',  ['uses' => 'v1\[email protected]']); 

und hier ist mein Controller:

public function __construct(Request $request = null) 
{ 
    parent::__construct(); 

    $this->bookStructure = new bookStructure($request->imageHeight); 
} 

aber die Anforderung variabel ist immer null. Wie kann ich die Anfrage an den Konstruktor übergeben?

+0

Jeder spezifische Grund für t rying das? –

+1

Sie können das nicht, da Laravel die Anfrage nicht in den Konstruktor eingibt, während Sie es an die Controller-Methode 'getBookById' weiterleiten. Sie könnten versuchen, '['verwendet' => 'v1 \ BookController @__ construct']'. Sollte funktionieren, scheint aber sinnlos –

Antwort

-1

Ich weiß, dass Sie fragen, wie Sie eine Anfrage an einen Klassenkonstruktor übergeben, aber vielleicht möchten Sie es überdenken und an einen Controller übergeben, der die Anfrage validiert und Ihre Klasse mit validierten Anfragevariablen instanziiert.

+0

warum die down vote ?! –

+0

Ich habe nicht downvote, ich habe dies jedoch als keine Antwort markiert, weil es ein Kommentar zu der Frage sein sollte und keine Antwort. – apokryfos

0

Ich weiß nicht, welche Version von Laravel Sie verwenden, aber ich denke in 5.2+ der Controller wird erstellt, bevor die Anfrage gebunden ist. Es gibt eine Abhilfe:

public function __construct() 
{ 
    parent::__construct(); 
    $this->middleware(function (Request $r, $next) { 
     $this->bookStructure = new bookStructure($request->imageHeight); 
     return $next($r); 
    }); 
} 

Allerdings würde ich empfehlen, über die Service-Container dies zu tun ist:

Datei AppServiceProvider

$this->app->bind("bookstructure.withheight", function ($app) { 
    return new bookStructure($app->make("request")->get("imageHeight",0)); 
}); 

Sie Ihre bookStructure instanziieren können, wo immer Sie müssen es über:

app()->make("bookstructure.withheight"); 
Verwandte Themen