2016-02-24 58 views
1

我在Controller中有以下功能。调用函数来保存和重定向路由:Laravel 5.2

public function UpdateCountry(\App\Http\Requests\CountryRequest $request) { 
    $this->SaveChanges($request); 
} 

private function SaveChanges($request) { 
    if($request['CountryID'] == 0) { 
     $Country = new \App\Models\CountryModel(); 
    } 
    else { 
     $Country = \App\Models\CountryModel 
        ::where('CountryID', $request['CountryID'])->first(); 
    } 

    $Country->Country = $request['Country']; 
    $Country->CountryCode = $request['CountryCode']; 
    $Country->save(); 
    return redirect()->route('AllCountries'); 
} 

public function AllCountries() { 
    $Countries = \App\Models\CountryModel::all(); 
    return view('Country.List', array('Countries' => $Countries)); 
} 

问题是在下面一行:当我打电话功能的SaveChanges,我不能看到国家页面列表,当我在UpdateCountry功能直接写代码,它成功地重定向路径。

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

以前有人遇到过这个问题吗?

回答

1

您的路线正在由UpdateCountry功能处理。 Laravel将根据此函数的返回值采取行动。但是,你不会从这个函数返回任何东西。

您打电话给SaveChanges,它返回一个Redirect对象,但是你不会从你的UpdateCountry函数返回任何东西。您需要使用UpdateCountry函数中的Redirect对象,以便Laravel实际将重定向返回给客户端。

更新您的UpdateCountry功能如下:

// added the return statement, so this function will return the redirect 
// to the route handler. 
public function UpdateCountry(\App\Http\Requests\CountryRequest $request) { 
    return $this->SaveChanges($request); 
} 
1

也许你错过了在$ this->的SaveChanges($请求)回报。它必须是:

public function UpdateCountry(\App\Http\Requests\CountryRequest $request) { 
    return $this->SaveChanges($request); 
} 

我希望它适合您。