我有这种控制器方法:
public function index() {
if(Auth::user()){
$tests = $this->getAllTests();
$tests = (new TestDetailsController)->getTestDetails($tests);
return view('website.home')->with(['tests' => $tests]);
}else{
return view('website.auth.login');
}
}
这就是路线:
Route::get('/home', 'HomeController@index');
我在视图home.blade.php
上显示这个很好,但我需要这条路线的相同数据以某种方式显示在两个视图上。
例如在home.blade.php和另一个视图中。
这怎么可能?我应该传递一个参数吗?
你能帮助我吗?我是新手编码..谢谢。
答案 0 :(得分:1)
您可以使用视图编辑器并将其附加到这两个视图。
来自the docs:
您可以通过将一组视图作为第一个参数传递给composer方法,一次将视图编辑器附加到多个视图:
View::composer(
['home', 'another_view'],
'App\Http\ViewComposers\MyViewComposer'
);
我也可以在我的回购中展示use a service class。在这种情况下,您可以在两种控制器方法中执行类似的操作:
return view('website.home', ['tests' => $this->myService->getTests()]);
答案 1 :(得分:0)
您可以使用以下两个URI访问您的操作:
/home
/home?view2=yes
因此,您的操作返回视图应如下所示:
....
$tests = (new TestDetailsController)->getTestDetails($tests);
if (is_null(request('view2',null))){
return view('website.home')->with(['tests' => $tests]);
}
else{
return view('website.another-view')->with(['tests' => $tests]);
}
....
此外,通过这种方式,您可以渲染所需的视图,而不仅仅是两个:
....
$tests = (new TestDetailsController)->getTestDetails($tests);
$viewsList = ['webmite.view1','posts.listings','users.found'];
if (!is_null(request('view2',null)) && isset($viewsList[request('view2')])){
return view($viewsList[request('view2')])->with(['tests' => $tests]);
}
else{
return view('website.home')->with(['tests' => $tests]);
}
....
但是,这样view2
参数应该是一个整数,等于$viewsList
中所需的视图索引。即/home?view2=0