我的应用程序中有3条路由,希望在控制器的函数中运行。现在,当调用该函数时,该函数中的路由也必须执行。以下是我的编码方式。在getData
中执行的路由在同一控制器中调用其相关功能。
PS:这可能不是实现此目标的正确方法。
但是我该怎么实现呢?
控制器
public function getData(Request $request)
{
$message = new Message( array(
'title' => $request->get('title'),
'description' => $request->get('description'),
'branch_id' => Auth::user()->branch_id,
'user_id' => Auth::user()->id
));
$message->save();
return redirect('getproducts');
return redirect('getcustomer');
return redirect('getshop');
}
public function getProducts()
{ //do something
}
public function getCustomer()
{// do something
}
public function getShop()
{ // do something
}
路线
Route::get('getproducts',Controller@getProducts);
Route::get('getCustomer',Controller@getCustomer);
Route::get('getshop',Controller@getShop);
答案 0 :(得分:0)
如果您打算在Controller类中的所有其他$message = new Message( array(
方法/操作上使用getData
和其余get*
(重定向除外),则可以移动{{ $message = new Message( array(
方法中的1}}代码块,如下所示:
private
然后,您只需重新定义private function getDataHelper(Request $request)
{
$message = new Message([
'title' => $request->get('title'),
'description' => $request->get('description'),
'branch_id' => Auth::user()->branch_id,
'user_id' => Auth::user()->id
]);
return $message->save();
}
方法的结构即可:
public get*
也许不是最有效的方法,但可以完成工作。您可能想要删除public function getProducts(Request $request)
{
return $this->getDataHelper($request);
}
public function getCustomer(Request $request)
{
return $this->getDataHelper($request);
}
public function getShop(Request $request)
{
return $this->getDataHelper($request);
}
方法中的return
。
编辑:
或者,如果您想根据请求中的public get*
或title
参数有条件地进行重定向,可以执行以下操作,并保留大部分代码:
description
请注意,我猜条件符合正确的重定向要求。