我为编辑用户设置了一个 EditUsersRequest 请求,为了确保电子邮件地址保持唯一但忽略正在编辑的用户的电子邮件地址(这样他们不必在每次编辑时都将他们的电子邮件地址更改为唯一的地址),我在 rules() 函数中设置了参数请求$request。这昨天工作得很好,我没有对代码进行任何更改,但现在我不断收到错误目标 [App''Http''Requests''Request] 不可实例化。尝试更新用户时。我该如何解决这个问题?我不明白为什么它现在不起作用。下面是请求和控制器的代码:
请求:
<?php
namespace App'Http'Requests;
use App'Http'Requests'Request;
use Illuminate'Support'Facades'Auth;
class EditUserRequest extends Request
{
public function authorize()
{
return Auth::user()->isActive() ? true:false;
}
public function messages()
{
return [
'unique'=>'That email address is already registered',
'regex'=>'Password must contain at least 1 letter and 1 number'
];
}
public function rules(Request $request)
{
return [
'name'=>'required|min:2|max:50',
'email'=>'required|email|max:50|unique:users,email,'.$request->get('id'),
'password'=>'required'
//'password'=>'required|min:8|regex:/[a-zA-Z][0-9]/' NOT IN USE WHILE IN DE
];
}
}
控制器方法:
public function update(EditUserRequest $request, $id)
{
$user = User::findOrFail($id);
if(trim($request->password) == '') {
$data = $request->except('password');
} else {
$data = $request->all();
$data['password'] = bcrypt($request->password);
}
if($file = $request->file('photo_id')) {
$name = time().'_'.$file->getClientOriginalName();
$file->move('images', $name);
$photo = Photo::create(['path'=>$name]);
$data['photo_id'] = $photo->id;
}
$data['is_active'] = !$request->is_active ? 0:1;
$message = $user->update($data) ? "User {$user->name} has been updated": "Unable to update user {$user->name}";
Session::flash('updated', $message);
return redirect('/admin/users');
}
使用
use Illuminate'Http'Request;
而不是
use App'Http'Requests'Request;
您也可以在这里查看:https://laravel.com/api/5.0/Illuminate/Http/Request.html
尝试
use Request;
而不是
use App'Http'Requests'Request;
$this->route('users')
可用于获取用户 ID $this->segment(3)
。使用路由只是更加动态。