Передача данных с контроллера для просмотра в Laravel

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

У меня есть контроллер - 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>

Я получаю эту ошибку: Undefined variable: students (View: regprofile.blade.php)

Ответ 1

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

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

Ответ 2

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

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

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

В вашем маршруте

Route::get('/sleep', '[email protected]');

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

Для массива (несколько значений) измените метод спящего режима на:

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

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

Ответ 3

В Laravel 5.6:

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

Ответ 4

Лучший и простой способ передать одну или несколько переменных для просмотра из контроллера - это использовать метод compact().

Для передачи одной переменной для просмотра,
return view("user/regprofile",compact('students'));

Для передачи нескольких переменных для просмотра,
return view("user/regprofile",compact('students','teachers','others'));

И ввиду этого вы можете легко пройти через переменную,

@foreach($students as $student) {{$student}} @endforeach

Ответ 5

Попробуйте с помощью этого кода:

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

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

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

Ответ 6

Ребята Мне интересно, есть ли способ отправить данные модели с контроллера на какой-то вид без использования return view() → with()?

Ответ 7

Вы можете попробовать это также:

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

и используйте эту переменную в файле view.blade, чтобы получить имя ученика и другие столбцы:

    {{$students['name']}}

Ответ 8

Когда я передаю более двух переменных, это не будет работать

return view::make('admin/crosstabdata', array(
                'variables'    =>  $variables,
                'tbHeading'  =>  $tbHead,
                'socVal'  =>  $sectionVal
            ));

Неопределенная переменная: socVal (View: resources/views/admin/crosstabdata.blade.php)

Ответ 9

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

Ответ 10

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

Controller:
-----------------------------
 $fromdate=date('Y-m-d',strtotime(Input::get('fromdate'))); 
        $todate=date('Y-m-d',strtotime(Input::get('todate'))); 

 $datas=array('fromdate'=>"From Date :".date('d-m-Y',strtotime($fromdate)), 'todate'=>"To 
        return view('inventoryreport/inventoryreportview', compact('datas'));

View Page : 
@foreach($datas as $student)
   {{$student}}

@endforeach
[Link here]

Ответ 11

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