未定义 variable:users.....在 laravel 中使用资源控制器索引和存储方法时发生变量冲突
Undefined variable:users.....Variable conflict when using a resource controller index and store method in laravel
我无法在存储方法后将我的控制器重定向到同一视图 index.blade.php,它给出错误未定义变量:用户,而我通过索引方法重定向时,它工作正常。我该如何解决这个问题
这是用户控制器
public function index()
{
$users = \App\User::all();
return view('pages.index')->with('users',$users);
}
public function create()
{
$users = \App\User::all();
return view('pages.create', compact('users'));
}
public function store(Request $request)
{
$validator = \Validator::make($request->all(), [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required',
if ($validator->fails())
{
return response()->json(['errors'=>$validator->errors()->all()]);
}
else
{
$users = new User();
$users->first_name = $request->first_name;
$users->last_name=$request->last_name;
$users->email=$request->email;
$users->save();
return view('pages.index');
}
}
index.blade.view
<tbody>
@foreach($users as $user)
<tr>
<td scope="row">{{$user->id}}</td>
<td>{{$user->first_name.' '.$user->last_name}}</td>
<td>{{$user->email}}</td>
</tr>
@endforeach
</tbody>
您应该重定向到 returns 索引视图而不是返回视图本身的资源的索引路由:
return redirect()->route('pages.index');
我不确定你的路由是什么名字或者 URL 是什么,但是指向你 UserController
上的 index
方法的路由是你想要的重定向到。
我无法在存储方法后将我的控制器重定向到同一视图 index.blade.php,它给出错误未定义变量:用户,而我通过索引方法重定向时,它工作正常。我该如何解决这个问题
这是用户控制器
public function index()
{
$users = \App\User::all();
return view('pages.index')->with('users',$users);
}
public function create()
{
$users = \App\User::all();
return view('pages.create', compact('users'));
}
public function store(Request $request)
{
$validator = \Validator::make($request->all(), [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required',
if ($validator->fails())
{
return response()->json(['errors'=>$validator->errors()->all()]);
}
else
{
$users = new User();
$users->first_name = $request->first_name;
$users->last_name=$request->last_name;
$users->email=$request->email;
$users->save();
return view('pages.index');
}
}
index.blade.view
<tbody>
@foreach($users as $user)
<tr>
<td scope="row">{{$user->id}}</td>
<td>{{$user->first_name.' '.$user->last_name}}</td>
<td>{{$user->email}}</td>
</tr>
@endforeach
</tbody>
您应该重定向到 returns 索引视图而不是返回视图本身的资源的索引路由:
return redirect()->route('pages.index');
我不确定你的路由是什么名字或者 URL 是什么,但是指向你 UserController
上的 index
方法的路由是你想要的重定向到。