未定义的变量:laravel上的libros(视图:C:\ Users \ CDS22 \ Desktop \ Crud \ resources \ views \ libros \ index.blade.php)

时间:2019-09-12 22:29:57

标签: php laravel laravel-blade

我从控制器接收到一个数组,以使用@foreach刀片循环将其映射,但是在插入数据库后,当我要将应用程序重定向到索引刀片文档时,错误出现:

这是我的控制者:

public function store(Request $request)
{
    //
    $libro = new Libro;
    $libro->titulo = $request->titulo;
    $libro->save();
    return view('libros.index');
}

这是我的观点:

<table class="table">
    <thead>
        <tr>
            <th>Id</th>
            <th>Titulo</th>
        </tr>
    </thead>
    <tbody>
    @foreach ($libros as $libro)
        <tr>
            <td>{{ $libro->id }}</td>
            <td>{{ $libro->titulo }}</td>
        </tr>
    @endforeach
    </tbody>
</table>

我希望控制器方法重定向将我正确地发送到视图,但是每次我向数据库输入寄存器时,控制器将我重定向到刀片视图时,就会出现此错误,我必须重新加载页面才能进入视图。

2 个答案:

答案 0 :(得分:0)

在存储方法中,您要么将用户重定向到索引页面,要么再次检索并传递所有libros数组。
首选前一种方式。

假设您为路线指定了名称,则可以执行以下操作:

public function store(Request $request)
{
   $libro = new Libro;
   $libro->titulo = $request->titulo;
   $libro->save();
   return redirect()->route('libros.index'); // replace libros.index with the index route name
}

答案 1 :(得分:0)

如果您这样重写,我认为它会起作用

public function store(Request $request)
{
//
$libro = new Libro;
$libro->titulo = $request->titulo;
$libro->save();
$libros = Libro::all()->get();
return view('libros.index', compact('libros'));
}