Laravel 5控制器返回控制器

时间:2015-10-08 18:13:40

标签: laravel

我有一个控制器功能,需要重定向到具有不同功能的路由,以避免代码冗余。是否可以将重定向放到不同的函数中?

以下是代码:

public function index()
{
    $x = Auth::user()->id;  

    $id = DB::table('requests')->where('id', $x)->lists('userid');

    if (!is_null($id)) {
        $frnd = DB::table('users')->whereIn('id', $id)->get();

        if (!is_null($frnd)) {
            return view('friendlist', compact('frnd'));
        } else {
            $frnd = null;

            return view('friendlist', compact('frnd'));
        }
    } else {
        $frnd = null;
        return view('friendlist', compact('frnd'));
    }
}

public function respond()
{
    $frnds = new Friend;

    $id = Auth::user()->id;

    $friendid = Request::input('friendid');

    $frnds->id = $id; 

    $frnds->friendid = $friendid;

    if (Input::get('accept')) {
        $frnds->save();
    }

    DB::table('requests')->where('id', $id)->where('userid', $friendid)        

    return  // this is where i should redirect to page with function index()
}

2 个答案:

答案 0 :(得分:1)

在路径定义中命名索引路径,如此

Route::get('home', ['uses' => 'YourController@index', 'as' => 'home']);

然后使用重定向方法重定向到此路线:

return redirect()->route('home');

有关重定向的更多信息,请使用官方文档

http://laravel.com/docs/5.1/responses#redirects

答案 1 :(得分:0)

我不认为这是完美的,但有人更喜欢这种方式:

private function _index()
{
    $x = Auth::user()->id;  

    $id = DB::table('requests')->where('id', $x)->lists('userid');

    if (!is_null($id)) {
        $frnd = DB::table('users')->whereIn('id', $id)->get();

        if (!is_null($frnd)) {
            return view('friendlist', compact('frnd'));
        } else {
            $frnd = null;

            return view('friendlist', compact('frnd'));
        }
    } else {
        $frnd = null;
        return view('friendlist', compact('frnd'));
    }
}

public function index()
{
    $this->_index();
}

public function respond()
{
    $frnds = new Friend;

    $id = Auth::user()->id;

    $friendid = Request::input('friendid');

    $frnds->id = $id; 

    $frnds->friendid = $friendid;

    if (Input::get('accept')) {
        $frnds->save();
    }

    DB::table('requests')->where('id', $id)->where('userid', $friendid)        

    $this->_index();
}

重复代码的私有函数。