我的项目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();
}
答案 0 :(得分:0)
我认为你正在使用路由控制器,因为你得到了用于获取的用户和用于post的postUsers。如果我是对的,那么你需要在函数名中使用任何前缀来获取get和post方法。就像
public function anyUsers() {
$users = User::all();
$roles = ["admin", "personnel"];
return view('cp.users', ['users' => $users, 'roles' => $roles]);
}
此函数将同时使用get和方法使用任何前缀