我正在为我的网络应用程序创建个人资料页面。在此视图profile.blade.php
中,我想包含视图progress/index.blade.php
。我有以下结构:
profile.blade.php
<div class="panel panel-default">
<div class="panel-heading clearfix">
<h1 class="panel-title pull-left">{{ $user->name }} Progress</h1>
</div>
<div class="panel-body">
@include('client.progress.index')
</div>
</div>
web.php
Route::group(['middleware' => ['auth', 'client'], 'prefix' => 'client', 'as' => 'client.'], function () {
Route::get('home', 'Client\HomeController@index')->name('home');
Route::get('profile', 'Client\UserController@profile')->name('profile');
Route::get('progress', 'Client\UserController@progress')->name('progress.index');
});
UserController中@进展
public function progress(){
$auth = Auth::user();
$progressPictures = Picture::select('*')
->where('user_id', $auth->id)
->get();
return view('client.progress.index', ['progressPictures' => $progressPictures]);
}
client.progress.index
<p>Progress pictures</p>
@foreach($progressPictures as $progressPicture)
<img src="/storage/uploads/progress/{{ $progressPicture }}" style="width:150px; height:150px; float:left; border-radius:50%; margin-right:25px;">
@endforeach
当我从index.blade.php
删除php部分时,该网站正常运行。但是当我添加foreach
循环时,$progressPictures
未定义。我没有以某种方式调用UserController@progress
。有人可以帮我这个吗?
答案 0 :(得分:1)
通常根据我的观察,变量没有进入视图,因为您正在路由到另一个视图,而另一个视图由另一个控制器处理。
您可以采用的方法之一就是要有一个特性,您可以轻松地重复使用progressPictures的结果,或者因为您很快就需要它,您可能需要在profile
中复制此代码。 UserController
中的方法,以便您也可以在个人资料页面中显示progressPictures
:
所以你有:
public function profile()
{
//codes before or after
$auth = Auth::user();
$progressPictures = Picture::select('*')
->where('user_id', $auth->id)
->get();
//......
return view('profile', compact('progressPictures'));
Ps:一般不推荐不必要的代码重复,但我会先这样做,然后再清理一下。
答案 1 :(得分:0)
将此更改为
return view('client.progress.index', ['progressPictures' => $progressPictures]);
到这个
return view('client.progress.index')-> with('progressPictures', $progressPictures);
答案 2 :(得分:0)
更改
@include('client.progress.index')
到
@include('client.progress.index', ['progressPictures' => $progressPictures])