it-swarm.com.de

Wie kann ich Daten an Laravel übergeben?

Ich übergebe Daten mit return View::make('blog', $posts); an meine Blade-Ansicht und in meiner Blade-Ansicht versuche ich, eine @foreach ($posts as $post) auszuführen. Am Ende bekomme ich die Fehlermeldung, dass $posts nicht definiert ist.

Meine Frage ist, wie das $posts-Array heißen würde.

40
Sam Pettersson

Sie können Daten mit der with-Methode an die Ansicht übergeben.

return View::make('blog')->with('posts', $posts);
60
Mostafa Adly

Es ist wahrscheinlich erwähnenswert, dass die Übergabe von Daten an die Ansicht ab Laravel 5 jetzt wie folgt erfolgt:

return view("blog", ["posts"=>$posts]);

Oder: 

return view(“blog”, compact(“posts”));

Dokumentation ist verfügbar hier .

38
miken32

Sie können auch ein Array als zweites Argument hinter dem Namen der Ansichtsvorlage übergeben, anstatt eine Reihe von ->with()-Methoden aneinandergereiht.

return View::make('blog', array('posts' => $posts));

Wenn Sie PHP 5.4 oder besser verwenden, können Sie die viel schönere "kurze" Array-Syntax verwenden:

return View::make('blog', ['posts' => $posts]);

Dies ist nützlich, wenn Sie das Array an anderer Stelle berechnen möchten. Wenn Sie beispielsweise über eine Reihe von Variablen verfügen, die jeder Controller an die Ansicht übergeben muss, und Sie diese mit einem Array von Variablen kombinieren möchten, die für jeden bestimmten Controller eindeutig sind (beispielsweise mit array_merge), können Sie $variables ( welches ein Array enthält!):

return View::make('blog', $variables);

(Ich habe dies aus meinem Kopf heraus getan: Lassen Sie mich wissen, ob ein Syntaxfehler eingedrungen ist ...)

9
iconoclast

Wenn Sie nur eine Variable zur Ansicht übergeben möchten, können Sie verwenden

In Controller

return view('blog')->withTitle('Laravel Magic method.');

In Ansicht

<div>
  Post title is {{$title}}.
</div>

Wenn Sie mehrere Variablen zur Ansicht übergeben möchten, können Sie verwenden

In Controller

return view('blog')->withTitle('Laravel magic method')->withAuthor('Mister Tandon');

In Ansicht

<div>
   Post title is {{$title}}.Author Name is {{$author}}
</div>
7
mistertandon
use TCG\Voyager\Models\Jobtype;

class FormController extends Controller
{
public function index()
{
   $category = Jobtype::all();
   return view('contact', compact('category'));

}
}
  • verwenden Sie Ihr Modell
  • weisen Sie es einer Variablen zu
  • Übergeben Sie das Objekt an die AnsichtHier ist ein Beispiel:
6
li bing zhao

Tips1:

Mit () verwenden Dies ist eine bewährte Methode

return view('about')->withName('Author Willson')->withJob('Writer');
return View::make('home')->with(compact('about'))
return View::make('home')->with('comments', $comments);

Tips2:

Verwenden von compact ()

return view(about, compact('post1','post2'));

Tips3:

Verwenden zweiter Parameter:

return view("about", ["comments"=>$posts]);
4
venkatSkpi

regler:

use App\your_model_name;
funtion index()
{
$post = your_model_name::all();
return view('index')->with('this_will_be_used_as_variable_in_views',$post);
}

index:

<h1> posts</h1>
@if(count($this_will_be_used_as_variable_in_views)>0)
@foreach($this_will_be_used_as_variable_in_views as $any_variable)
<ul>
<p> {{$any_variable->enter_table_field}} </p>
 <p> {{$any_variable->created_at}} </p>
</ul>

@endforeach
@else
<p> empty </p>
@endif

Hoffe das hilft! :)

3
kamal

Sie können dasselbe auch auf andere Weise tun,

Wenn Sie PHP 5.5 oder die neueste Version verwenden, können Sie dies wie folgt tun:

Regler:

return view(index, compact('data1','data2')); //as many as you want to pass

Aussicht:

<div>
    You can access {{$data1}}. [if it is variable]
</div>

@foreach($data1 as $d1)
    <div>
        You can access {{$d1}}. [if it is array]
    </div>
@endforeach

Auf dieselbe Weise können Sie auf alle Variablen zugreifen, die Sie in der Kompaktfunktion übergeben haben.

Ich hoffe es hilft :)

1

Sie können auch schreiben, um mehrere Daten von Ihrem Controller an eine Ansicht zu übergeben

 return \View::make('myHome')
            ->with(compact('project'))
            ->with(['hello'=>$hello])
            ->with(['hello2'=>$hello2])
            ->with(['hello3'=>$hello3]);
1
user9389401

Sie können Daten mit der with-Methode an die Ansicht übergeben.

return view('greeting', ['name' => 'James']);
1
Jay Momaya

Beispielsweise haben Sie ein Array mit Ihren Daten.

$array1  =  $data;
$array2 = $data;

Von Ihrem Controller aus können Sie diese Variable mit compact übergeben. Sie können beliebig viele Arrays übergeben. 

return view('data.index',compact('array1','array2'));

Hier ist data ein Ordner in der Ansicht und index ist die Datei mit der Erweiterung index.blade.php

In der Ansicht können Sie die Arrays so aufrufen

@foreach ($array1 as $something)
   // some operation
@endforeach
0
user3677355

Das kannst du auch so machen 

$arr_view_data['var1'] = $value1;
$arr_view_data['var2'] = $value2;
$arr_view_data['var3'] = $value3;

return view('your_viewname_here',$arr_view_data);

Und Sie greifen auf diese Variable zu, um sie als $var1, $var2, $var3 anzuzeigen.

0
Sagar jadhav

Sie können Folgendes verwenden, um Daten zur Anzeige in Laravel zu übergeben:

public function contact($id) {
    return view('contact',compact('id'));
}
0
TheName