web-dev-qa-db-fra.com

Passer des données du contrôleur pour les afficher à Laravel

Bonjour les gars, je suis nouveau dans laravel et j'ai essayé de stocker tous les enregistrements de la table 'student' dans une variable, puis de passer cette variable à une vue afin que je puisse les afficher. 

J'ai un contrôleur - ProfileController et à l'intérieur de cela une fonction:

    public function showstudents()
     {
    $students = DB::table('student')->get();
    return View::make("user/regprofile")->with('students',$students);
     }

À mon avis, j'ai ce code

    <html>
    <head></head>
    <body> Hi {{Auth::user()->fullname}}
    @foreach ($students as $student)
    {{$student->name}}

    @endforeach


    @stop

    </body>
    </html>

Je reçois cette erreur: Variable non définie: étudiants (Affichage: regprofile.blade.php)

13
VP1234

Pouvez-vous essayer ceci, 

return View::make("user/regprofile", compact('students')); OR
return View::make("user/regprofile")->with(array('students'=>$students));

Alors que, vous pouvez définir plusieurs variables quelque chose comme ça, 

$instructors="";
$instituitions="";

$compactData=array('students', 'instructors', 'instituitions');
$data=array('students'=>$students, 'instructors'=>$instructors, 'instituitions'=>$instituitions);

return View::make("user/regprofile", compact($compactData));
return View::make("user/regprofile")->with($data);
14
Irfan Ahmed

Pour passer une seule variable à afficher.

Dans votre contrôleur, créez une méthode telle que:

function sleep()
{
        return view('welcome')->with('title','My App');
}

Dans votre itinéraire 

Route::get('/sleep', 'TestController@sleep');

Dans votre vue Welcome.blade.php. Vous pouvez faire écho à votre variable comme {{ $title }}

Pour un tableau (valeurs multiples), modifiez la méthode de veille pour:

function sleep()
{
        $data = array(
            'title'=>'My App',
            'Description'=>'This is New Application',
            'author'=>'foo'
            );
        return view('welcome')->with($data);
}

Vous pouvez accéder à votre variable comme {{ $author }}.

8
Bugfixer

Dans Laravel 5.6:

$variable = model_name::find($id);
return view('view')->with ('variable',$variable);
1
DelvinDuel

Vous pouvez aussi essayer ceci:

    public function showstudents(){
        $students = DB::table('student')->get();
        return view("user/regprofile", ['students'=>$students]);
    }

et utilisez cette variable dans votre fichier view.blade pour obtenir le nom des étudiants et d'autres colonnes:

    {{$students['name']}}
0
Emmanuel Uko

Essayez avec ce code:

return View::make('user/regprofile', array
    (
        'students' => $students
    )
);

Ou si vous voulez passer plus de variables dans la vue:

return View::make('user/regprofile', array
    (
        'students'    =>  $students,
        'variable_1'  =>  $variable_1,
        'variable_2'  =>  $variable_2
    )
);
0
Vanndy