web-dev-qa-db-fra.com

Comment transmettre des données à visualiser à Laravel?

En transmettant des données à ma vue de lame avec return View::make('blog', $posts); et dans ma vue de lame, j'essaie d'exécuter une @foreach ($posts as $post). Je me retrouve avec une erreur disant que $posts n'est pas défini.

Ma question est la suivante: comment le tableau $posts serait-il appelé?

40
Sam Pettersson

Vous pouvez transmettre des données à la vue à l'aide de la méthode with.

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

Il est probablement intéressant de noter que depuis Laravel 5, la transmission des données à la vue est maintenant effectuée comme suit:

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

Ou: 

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

La documentation est disponible ici .

38
miken32

Vous pouvez également passer un tableau en tant que deuxième argument après le nom du modèle de vue, au lieu d'enchaîner un tas de méthodes ->with().

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

Ou, si vous utilisez PHP 5.4 ou une version supérieure, vous pouvez utiliser la syntaxe de tableau "courte" beaucoup plus jolie:

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

Ceci est utile si vous voulez calculer le tableau ailleurs. Par exemple, si chaque contrôleur doit transmettre à la vue un groupe de variables que vous souhaitez associer à un tableau de variables unique pour chaque contrôleur particulier (à l'aide de array_merge, par exemple), vous pouvez calculer $variables ( qui contient un tableau!):

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

(Je l'ai fait par coeur: laissez-moi savoir si une erreur de syntaxe s'est glissée dans ...)

9
iconoclast

Si vous voulez passer juste une variable à afficher, vous pouvez utiliser

In Contrôleur

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

In voir

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

Si vous souhaitez transmettre plusieurs variables à afficher, vous pouvez utiliser

In Contrôleur

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

In voir

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

}
}
  • utilise ton modèle
  • l'assigner à une variable
  • passez l'objet à la vueVoici un exemple:
6
li bing zhao

Tips1:

Utilisation de With (), il s'agit d'une meilleure pratique

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

Tips2:

Utilisation de compact ()

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

Tips3:

Utilisation de deuxièmes paramètres:

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

manette:

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

indice:

<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

J'espère que cela t'aides! :)

3
kamal

Vous pouvez aussi faire la même chose d'une autre manière,

Si vous utilisez PHP 5.5 ou la version la plus récente, procédez comme suit:

Manette:

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

Vue:

<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

De la même manière, vous pouvez accéder à toutes les variables que vous avez passées dans la fonction compacte.

J'espère que ça aide :)

1
Sagar Naliyapara

Vous pouvez également écrire pour transmettre plusieurs données de votre contrôleur à une vue.

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

Vous pouvez transmettre des données à la vue à l'aide de la méthode with.

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

Par exemple, vous avez un tableau avec vos données.

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

Depuis votre contrôleur, vous pouvez transmettre cette variable en utilisant compact. Vous pouvez passer autant de tableau que vous le souhaitez. 

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

Ici les données sont un dossier en vue et index est le fichier avec l'extension index.blade.php

En vue, vous pouvez appeler les tableaux comme ceci

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

Vous pouvez aussi faire comme ça 

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

return view('your_viewname_here',$arr_view_data);

Et vous accédez à cette variable pour afficher en tant que $var1, $var2, $var3

0
Sagar jadhav

Vous pouvez utiliser les éléments suivants pour transmettre des données à afficher dans Laravel:

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