2016-03-28 6 views
2

Mit Blick auf Laravel Code fand ich sie variabel von ‚Routen‘ auf ‚Blick‘ mit dem folgenden Verfahren sind vorbei:Wie funktioniert Laravels "withVariableName"?

$arraysan = ['mike','robert','john']; **//Variable to be passed** 
return view('home')->withArraysan($arraysan); **//Variable passed with** name "withArraysan" 

In diesem oben genannten Syntax sie withArraysan Namen eine Funktion aufrufen, die nicht existiert.

Kann jemand erklären, wie es in Laravel gehandhabt wurde?

Antwort

0
$arraysan = ['mike', 'robert', 'john']; // Variable to be passed 
return view('home')->with('AnyVariable', $arraysan); 

Versuchen Sie dies! Das wird funktionieren.

Auch in home.blade.php überprüfen,

<?php 
    print_r($AnyVariable);die; 
?> 
+0

danke für die Antwort. Ich denke, Sie schreiben eine andere Option in Laravel verwendet, um die Variablen von "Routen" zu "Ansichten" zu erreichen, aber was ich frage mich, wie sie eine Funktion namens "withArraysan" welche Dosent existieren und wie sie es ohne Fehler ausgeführt? –

3

Seit einiger Zeit hat sich PHP, das Konzept der magic methods hatte - das sind spezielle Methoden, die zu einer Klasse hinzugefügt werden können Methodenaufrufe abfangen, die tun nicht existieren.

Es scheint, dass Laravel Views __call implementieren - das fängt dann einen Aufruf an eine undefinierte Methode für das Objekt ab und übergibt sowohl den Namen der Methode, die aufgerufen wird, als auch die Argumente. Auf diese Weise kann das View-Objekt dann sehen, dass der Aufruf withArraysanwith begann und die konkrete Methode with aufruft, wobei der zweite Teil Arraysan als erstes Argument und das Argument withArraysan als zweiter Teil übergeben wird.

2

Wenn ich Ihre Frage dann in Laravel haben hatten sie eine Klasse View magische Methode unter Verwendung von __call die obige Funktion und den Code für diese Funktion zu handhaben ist wie als

public function __call($method, $parameters) 
{ 
    if (Str::startsWith($method, 'with')) { 
     return $this->with(Str::snake(substr($method, 4)), $parameters[0]); 
    } 

    throw new BadMethodCallException("Method [$method] does not exist on view."); 
} 

folgt Und Du findest innerhalb

your_project_folder/vendor/laravel/framework/src/Illuminate/View/View.php 
Verwandte Themen