我正在尝试使用Laravel创建一个注册表单。
我创建了一个请求\App\Http\Requests\RegisterNewUserRequest
。这是rules()
方法:
public function rules()
{
return [
'email' => 'required|email|min:6|max:255|unique:members',
'password' => 'required|min:6|max:16|confirmed',
'name' => 'required|min:2|max:255|alpha',
'surname' => 'required|min:2|max:255|alpha',
];
}
这是我的会员控制器
//Route::post('{locale}/create-new-user, 'MemberController@create_new_user');
public function create_new_user($locale, RegisterNewUserRequest $request)
{
$input = $request->all();
$input['ip'] = Request::ip();
Member::create($input);
return redirect("/$locale/create-account");
}
我在输入信息时违反了验证规则。例如,我输入两个不同的密码,并在电子邮件字段中输入1个字符。它没有说什么。它也不会将数据保存到数据库中。该页面再次重定向到相同的空注册表单。
我的视图中有一个验证摘要
...
@foreach($errors->all() as $e)
<li>{{$e}}</li>
@endforeach
...
我跟踪发布的数据。它已发布。但是流程中有些奇怪。
修改
这也发生在我的联系表格中。如果我正确填写联系表格,它会发送一封电子邮件。但是,如果我违反了验证规则,它就不会对验证做任何说明,也不会发送电子邮件。
这是我的联系页面控制器
/**
* @param Requests\SendMessageRequest $
*/
public function sendMessage($locale, SendMessageRequest $request)
{
// validation
// $this->validate($request,
// ['name' => 'required|min:3',
// 'email' => 'required|min:5',
// 'subject' => 'required|min:3',
// 'message' => 'required|min:15'
// ]);
$formData = $request->all();
$formData['ip'] = Request::ip();
Mail::send('contact.send', compact('formData'),
function ($message) use ($formData) {
$message->from('frommail@example.com', 'Example')
->bcc(['bccmail@example.com'])
->to('tomail@example.com')
->subject($formData['subject']);
}
);
}
\App\Http\Requests\SendMessageRequest
文件的规则()方法
public function rules()
{
return [
'name' => 'required|min:3',
'email' => 'required|min:5',
'subject' => 'required|min:3',
'message' => 'required|min:15',
];
}
实际上它之前有效。添加多语言功能验证后没有奏效。我不知道是否有任何关系。
我怀疑在控制器和请求的顶部使用语句。