Laravel 请问如何将数据从show方法共享到两个不同的视图

Laravel 请问如何将数据从show方法共享到两个不同的视图,laravel,methods,view,controller,share,Laravel,Methods,View,Controller,Share,请告诉我是否有一种方法可以将数据从一个控制器方法共享到多个视图 这是CategoryController显示方法 /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $category = Category::find($id); $users = $category-&

请告诉我是否有一种方法可以将数据从一个控制器方法共享到多个视图

这是CategoryController显示方法

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    $category = Category::find($id);

    $users = $category->user;
  
    return view('categories.show')->with('users', $users);
}

我想要的是与另一个页面profile-display.blade.php共享相同的数据,而不创建另一个控制器。

@Adam这将帮助您

route.php

Route::get('users/{id}', 'CategoryController@show')->name('profile');

Route::get('Category/{id}', 'CategoryController@show')->name('category');

CategoryController.php

public

function show($request, $id) {
    $category = Category::find($id);

    $users = $category->user;
    if ($request::route()->getName() == 'category') {
        return view('categories.show')->with('users', $users);
    } else {
        return view('profile.show')->with('users', $users);
    }
}

不同的路线可以使用同一个控制器,但是如果一个控制器呈现多个视图而没有混乱的条件,或者至少创建一个新的控制器/方法,您将很难做到这一点

不过,通过使用带有路由的模型绑定,您可以省去一些代码以实现更精简的方法:

routes.php

Route::get('categories/{category}','CategoryController@show');
然后在
CategoryController.php
中:

公共功能展示(类别$Category)
{  
返回视图('categories.show')->带有('users',$category->user);
}
这将启用模型绑定来自动实例化模型(如果存在),如果不存在则返回404

您可以重复第二个视图的过程,但只需重用同一个控制器(我个人根本不喜欢)。只需在同一控制器中添加路由和新方法:

routes.php

Route::get('categories/{category}','CategoryController@show');
路由::get('profile-display','CategoryController@profileDisplay');
然后在
CategoryController.php
中:

公共功能展示(类别$Category)
{  
返回视图('categories.show')->带有('users',$category->user);
}
公共函数配置文件显示()
{  
返回视图(“纵断面图显示”);
}

我没有向
profileDisplay
方法添加任何模型绑定,因为我无法真正理解您希望如何将类别附加到配置文件显示页面(顾名思义),但这可能会给您一些粗略的想法。

您可以使用
\illumb\Support\Facades\View::share('foo','bar')

是否要根据条件返回到不同的视图?谢谢@Qamar Rafhan,但是当我运行代码时,我在视图中得到了一个空的数据集合('profile.show')->带有('users',$users);您需要在类别模型中定义与用户的类别关系,并确保数据库中存在记录