尝试根据用户浏览的视图加载不同的视图和方法。
查看:
public function edit()
{
if("SOMETHING")return View::make('store_edit');
If("SOMETHING")return View::make('product_edit');
}
方法:
public function destroy($id)
{
if(SOMETHING){
$store = Store::find($id);
$store->delete();
return redirect('/store');
}
if(SOMETHING){
$product = Product::find($id);
$product->delete();
return redirect('/product');
}
}
if()
语句中可以使用的内容取决于浏览哪个视图以删除正确的项目而不必重写每个表的函数。
答案 0 :(得分:1)
没有一种简单的方法可以获取有关哪个视图在之前的请求中显示的信息,而且这可能不是您想要的。您应该为这两种产品创建单独的控制器/路由"和"存储"。然后你可以完全取消这种观点逻辑。
要稍微回答一下您的问题,您可access information about the current route使用Route
门面。
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
答案 1 :(得分:0)
阅读Laravel路由:
https://laravel.com/docs/5.6/routing#route-parameters
路线
Route::get('something/{param}', 'SomeController@edit');
控制器
...
public function edit($param) {
if ($param === $expectedParam) {...} else {...}
}
你也可以选择$ param:
路线
Route::get('something/{param?}', 'SomeController@edit');
Controller (不要忘记给出默认值)
...
public function edit($param = null) {
if ($param === $expectedParam) {...} else {...}
}