【发布时间】:2016-05-22 19:06:52
【问题描述】:
我正在尝试在 Laravel 5 上使用自定义请求来验证通过 post 发送的输入,但是当表单字段正常时,即。表单验证很好,我的控制器的方法没有被调用。那是一个错误吗?怎么了?我知道这是可能的,因为我以前在另一个项目中做过。我在这个项目中使用的是 5.2.6 版本,然后我认为这是这个特定版本的问题,那是当我“切换回”到 5.1 但编辑我的composer.json,删除vendor 文件夹然后重新安装@987654323 @。
我的 UserController 的内容:
//...
public function save(Requests\CreateUserRequest $request)
{
$user = new User();
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->username = $request->input('username');
$user->password = $request->input('password_confirmation');
//$user->profile_id = $request->input('profile');
$user->profile_id = 1;
$user->save();
return redirect()->route('get_user_read');
}
//...
创建用户请求:
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreateUserRequest 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 [
'profile' => 'required',
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required',
'password_confirmation' => 'required|same:password',
];
}
public function messages()
{
return [
'profile.required' => 'O campo perfil é obrigatório!',
'name.required' => 'O campo nome é obrigatório!',
'username.required' => 'O campo nome de usuário é obrigatório!',
'username.unique' => 'O nome de usuário já foi registrado!',
'email.required' => 'O campo email é obrigatório!',
'email.unique' => 'O email informado já foi registrado!',
'email.email' => 'O email informado não é válido!',
'password.required' => 'O campo senha é obrigatório!',
'password_confirmation.required' => 'O campo de confirmação de senha é obrigatório!',
'password_confirmation.same' => 'A confirmação de senha não confere com a senha informada!',
];
}
}
谢谢。
【问题讨论】:
-
请检查“Requests\CreateUserRequest”是否是您请求文件的真实路径
-
那么如果你 dd() 你在保存函数中的请求没有任何反应?
-
为了测试我的保存函数是否被调用,我把
return " ";放在其他所有东西之前;它永远不会被执行。我应该看到一个空白页。正如我上面所说,当我使用我的自定义请求来验证表单输入时,我的保存函数永远不会被调用。 -
您的表单是否包含
rules方法数组中描述的所有这些值? IE。个人资料、姓名、用户名、电子邮件、密码、密码确认。当你用return []改变你的rules方法时检查它是否有效 -
您的问题回答正确吗?
标签: validation laravel-5 routes laravel-5.1