调用保存和重定向路由的功能:Laravel 5.2

时间:2016-02-24 18:49:58

标签: php laravel laravel-5.1 laravel-5.2

我在Controller中有以下功能。

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');

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

2 个答案:

答案 0 :(得分:1)

您的路线由UpdateCountry功能处理。 Laravel将根据此函数的返回值执行操作。但是,您没有从此功能返回任何内容。

您致电SaveChanges,它会返回Redirect个对象,但您不会从UpdateCountry功能返回任何内容。您需要Redirect函数中的UpdateCountry对象,以便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 :(得分:1)

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

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

我希望它适合你。