如何在Controller中运行路由-Laravel

时间:2018-11-09 15:46:41

标签: php laravel

我的应用程序中有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);

1 个答案:

答案 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

请注意,我猜条件符合正确的重定向要求。