Laravel 5中一条路由的GET和POST方法的共享数据

时间:2015-08-03 20:23:55

标签: php laravel model-view-controller laravel-5

我的项目POST路由通常在其GET版本路由上显示相同的视图。

因此POST路由(控制器)必须将相同的数据传递给同一视图。

有没有办法告诉Laravel在POST路由中将一些数据添加到GET路由传递的相同数据中?

我认为这是我错误的方式,必须有更好的方法。

例如,请参阅GET和POST方法传递给视图的以下常见数据。在这个例子中没有太多的数据,但通常有。

/**
 * @Route('/cp/users')
 *
 * @return \Response
 */
public function getUsers() {
    $users = User::all();
    $roles = ["admin", "personnel"];
    return view('cp.users', ['users' => $users, 'roles' => $roles]);
}

/**
 * @Route('/cp/users') POST
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Support\MessageBag
 */
public function postUsers(Request $request) {
    $users = User::all();
    $roles = ["admin", "personnel"];
    $rules = [
        'name'     => 'required',
        'surname'  => 'required',
        'email'    => 'required|email|unique:users',
        'password' => 'required|min:6',
        'role'     => 'required|in:admin,personnel'
    ];
    $validator = Validator::make((array)$request, $rules);
    if ($validator->fails()) {
        return view('cp.users', ['errors' => $validator->errors(), 'users' => $users, 'roles' => $roles]);
    }
    return view('cp.users', ['users' => $users, 'roles' => $roles]);
}

我是这样做的:

/**
 * @Route('/cp/users') POST
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Support\MessageBag
 */
public function postUsers(Request $request) {
    $rules = [
        'name'     => 'required',
        'surname'  => 'required',
        'email'    => 'required|email|unique:users',
        'password' => 'required|min:6',
        'role'     => 'required|in:admin,personnel'
    ];
    $validator = Validator::make((array)$request, $rules);
    if ($validator->fails()) {
        View::share('errors', $validator->errors());
    }
    return $this->getUsers();
}

1 个答案:

答案 0 :(得分:0)

我认为你正在使用路由控制器,因为你得到了用于获取的用户和用于post的postUsers。如果我是对的,那么你需要在函数名中使用任何前缀来获取get和post方法。就像

public function anyUsers() {
$users = User::all();
$roles = ["admin", "personnel"];
return view('cp.users', ['users' => $users, 'roles' => $roles]);
}

此函数将同时使用get和方法使用任何前缀