Передача данных от контроллера к виду в Laravel

Эй, ребята, я новичок в laravel, и я пытаюсь сохранить все записи таблицы "студент" в переменную, а затем передать эту переменную в представление, чтобы я мог их отобразить.

у меня есть контроллер-ProfileController и внутри него функция:

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

на мой взгляд у меня есть этот код

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

    @endforeach


    @stop

    </body>
    </html>

Я получаю эту ошибку: неопределенная переменная: студенты (View:regprofile.лезвие.в PHP)

5 ответов


можете ли вы попробовать,

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

в то время как вы можете установить несколько переменных что-то вроде этого,

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

для передачи одной переменной для просмотра.

внутри вашего контроллера создайте такой метод, как:

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

на маршруте

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

На Ваш Взгляд Welcome.blade.php. Вы можете повторить свою переменную, как {{ $title }}

для изменения массива (несколько значений), метод сна :

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

вы можете получить доступ к переменной, как {{ $author }}.


В Laravel 5.6:

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

попробуйте с этим кодом:

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

или если вы хотите передать несколько переменных в вид:

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

Я думаю, что передавать данные с контроллера на вид плохо. Потому что он не многоразовый и не делает контроллер толще. Вид должен быть разделен на 2 части: шаблон и помощник(который может получать данные откуда угодно). Вы можете искать просмотр композитора в laravel чтобы иметь больше информации.