Laravel 拉维公司;Ajax发送HTML表单时出错
以下是一项行动:Laravel 拉维公司;Ajax发送HTML表单时出错,laravel,Laravel,以下是一项行动: public function postMessageAjax(Request $request) { $this->validate($request, [ 'username' => 'required|string|regex:/^[a-zA-Z\d]+$/', 'email' => 'required|string|email', 'homepage' => 'nullable|str
public function postMessageAjax(Request $request)
{
$this->validate($request, [
'username' => 'required|string|regex:/^[a-zA-Z\d]+$/',
'email' => 'required|string|email',
'homepage' => 'nullable|string|url',
'text' => 'string',
'captcha' => 'required|captcha',
],
[
'captcha.captcha' => 'The captcha is incorrect',
'username.regex' => 'Use English letters and digits only',
]);
$message = new Message();
$message->username = $request->get('username');
$message->email = $request->get('email');
$message->homepage = $request->get('homepage');
$message->text = strip_tags($request->get('text'));
$message->ip = $request->ip();
$message->browser = get_browser($request->header('User-Agent'))->browser;
$message->save();
return view('Guestbook.postMessage');
}
以下是观点:
{!! BootForm::open(['id' => 'messageForm']) !!}
{!! BootForm::text('username') !!}
{!! BootForm::email('email') !!}
{!! BootForm::text('homepage') !!}
{!! BootForm::textarea('text') !!}
{!! captcha_img('flat') !!}
{!! BootForm::text('captcha') !!}
{!! BootForm::submit('Send') !!}
{!! BootForm::close() !!}
问题在于,Laravel以某种方式确定这是一个Ajax请求,并将错误的JSON(如果存在)设置为响应,而不是分别检索表单的HTML代码和每个输入的错误消息。问题是:如果不是通过Ajax,如何强制它以错误的方式呈现视图
更新:这是我想要得到的(表格本身和错误,如果存在):
对于@OuailB:
我刚刚注意到,当我做一个普通的POST请求时,它会通过GET请求将我重定向到同一个页面,因此错误消息似乎实际上出现在GET的正文中,而不是POST中,所以可能没有办法。我会考虑的,谢谢你的帮助 您可以手动创建验证程序,如果失败,则返回您想要的:
$validator = Validator::make($request->all(), [
'username' => 'required|string|regex:/^[a-zA-Z\d]+$/',
'email' => 'required|string|email',
'homepage' => 'nullable|string|url',
'text' => 'string',
'captcha' => 'required|captcha',
],
[
'captcha.captcha' => 'The captcha is incorrect',
'username.regex' => 'Use English letters and digits only',
]);
if ($validator->fails()) {
return Redirect::back()
->withErrors($validator)
->withInput($request->all());
}
请尝试以下代码:
public function postMessageAjax(Request $request)
{
$validator = Validator::make($request->all(), [
'username' => 'required|string|regex:/^[a-zA-Z\d]+$/',
'email' => 'required|string|email',
'homepage' => 'nullable|string|url',
'text' => 'string',
'captcha' => 'required|captcha',
],
[
'captcha.captcha' => 'The captcha is incorrect',
'username.regex' => 'Use English letters and digits only',
]);
if ($validator->fails()) {
return view('Guestbook.postMessage')
->withErrors($validator);
}
// Store your message here
}
编辑:
要显示错误,可以将以下代码添加到视图中:
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if(计数($errors)>0)
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
@恩迪夫
我得到了表单,但是表单中没有错误,虽然应该有。你必须添加一些代码来显示错误,我已经编辑了我的帖子,因此无法确定它在图片中是什么样子的?我刚刚看到BootForm已经有了这个功能,它应该可以正常工作。可以显示渲染视图吗?