【发布时间】:2016-08-02 05:18:34
【问题描述】:
自从我使用 laravel 以来已经好几个月了,但从未遇到过这样的问题。
我制作了一个简单的请求类来验证更新用户请求,如果遵循验证规则,它可以正常工作。如果验证规则失败,我们应该返回上一页并在 html 中显示所有错误。
据我说,我已经正确地编写了所有内容,就像我过去在其他应用程序中编写的一样,但是 $errors 在刀片中似乎无法访问
以下是我需要调试的代码 sn-ps:
routes.php
Route::group(['middleware' => ['web']], function () {
Route::get('/users/{id}/edit', 'UserController@edit');
Route::post('/users/{id}/edit', 'UserController@update');
});
UserController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Requests\UserUpdateRequest;
use App\Models\User;
use App\Models\Role;
use App\Models\Post;
class UserController extends Controller
{
public function edit($id)
{
try {
$user = User::find($id);
$roles = Role::all();
return view('users.edit', compact(['user', 'roles']));
}catch(Exception $e) {
return view('errors.500', compact(['e']));
}
}
public function update($id, UserUpdateRequest $request)
{
dd($request);
}
}
UserUpdateRequest.php
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class UserUpdateRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string|min:4',
'email' => 'required|email',
'role' => 'required|numeric',
'password' => 'required',
];
}
}
edit.blade.php
@extends('master')
@section('title') Edit Users @stop
@section('content')
<div class="row">
<div class="col-sm-12">
<h2>Edit User</h2>
</div>
</div>
<div class="alert alert-warning alert-dismissible" role="alert">
@foreach($errors->all() as $error)
{{ $error }}
@endforeach
</div>
<form action="{{ url('/users/'.$user->id.'/edit') }}" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="col-sm-6">
<div class="form-group">
<label>Name</label>
<input type="text" name="name" value="{{ $user->name }}" class="form-control" placeholder="Name">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Email Address</label>
<input type="text" name="email" value="{{ $user->email }}" class="form-control" placeholder="Email Address">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Role</label>
<select name="role" class="form-control">
@foreach($roles as $role)
@if($role->id == $user->role)
<option value="{{ $role->id }}" selected>{{ $role->name }}</option>
@else
<option value="{{ $role->id }}">{{ $role->name }}</option>
@endif
@endforeach
</select>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" placeholder="New Password">
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<input type="submit" class="btn btn-info btn-block" value="Update">
</div>
</div>
</form>
@stop
浏览器上的 HTML 响应为空白。
我还尝试了<?php dd($errors); ?>,它显示了以下内容
Edit User
ViewErrorBag {#168 ▼
#bags: []
}
更多信息here
【问题讨论】:
-
能否请您附上更新表格?我想它位于 edit.blade.php ?
-
添加表单代码@shock_gone_wild
-
这太疯狂了......我已经像你一样设置了东西,它对我来说很好(相同的 laravel 版本)
-
您在错误日志中看到任何异常吗?看起来请求没有正确重定向。
-
storage/logs/laravel.log没有错误
标签: php laravel-5.2