php 在Laravel中使用compact传递多个变量

0s7z1bwu  于 2022-10-30  发布在  PHP
关注(0)|答案(2)|浏览(224)

我有一个函数,它返回带有多个变量的视图。

家庭控制器.php

public function profilePage(){
        $data = User::all();
        $book = Library::all();
        return view('page.profile' , compact(array('data', 'book')));
}

配置文件.blade.php

@include('layouts.sidebar')
.
.
.
 @foreach($book as $Library)
     <tr>
        <td>{{$Library->book}}</td>
        <td>{{$Library->name}}</td>
        <td>{{$Library->author}}</td>
        <td>{{$Library->price}}</td>
    </tr>
 @endforeach

侧边栏.blade.php

<div class="info">
  <a href="{{ url ('profile' , $data -> first())}}" class="d-block">{{Auth::user() -> name }}</a>
</div>

当我尝试刷新浏览器查看更改时,它会显示错误“undefined variable $book”
说明\基础\引导\处理异常:176处理错误
联机
添加循环($currentLoopData); foreach($当前循环数据作为$库):循环索引();循环调用函数:?〉
在我添加从Library中检索数据的模块之前,代码工作正常。那么这是将多个变量传递到视图中的正确方法吗?

pbossiut

pbossiut1#

请尝试使用此文件夹,并确保加载的是正确的blade文件,在您的情况下,它是页面文件夹中的profile.blade.php

public function profilePage(){
    $data = User::all();
    $book = Library::all();

    return view('page.profile', [
        'data' => $data,
        'book' => $book,
    ]);

}
oug3syen

oug3syen2#

有4种方法可将数据传递到视图:
1个-

return view('page.profile' , ['book' => $book, 'data' => $data]);

二-

return view('page.profile' , compact('book', 'data'));

3个

return view('page.profile')
    ->with('data' => $data)
    ->with('book' => $book);

4 -不推荐

return view('page.profile' , get_defined_vars());

相关问题