【发布时间】:2020-12-14 04:17:54
【问题描述】:
我有一个联系表格,提交后会成功发送到数据库。问题是,当我在我的网页上检查验证时,使用 Larvael $error 验证正确显示错误,问题是我的网页总是在出现错误时重定向回主页,而不是页面保持静止并显示错误。我必须继续向下滚动到我的联系表所在的位置才能查看错误;这对我未来的用户来说会很烦人。如果出现错误,如何让页面保持原样?注意:当表单有效并提交时,我的页面会正确重定向,这不是问题。 NOTE-2:我创建了一个单页网页,导航链接将您带到该网页,没有重定向。相反,它是一个 HTML 页面。
Web.php
Route::get('/', 'HomeController@index')->name('home');
Route::post('/contact/submit', 'MessagesController@submit');
MessagesController.php
namespace App\Http\Controllers;
use App\Message;
use Illuminate\Http\Request;
class MessagesController extends Controller
{
public function submit(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|min:2',
'email' => 'required|max:255',
'phonenumber' => 'required|min:10|max:10',
'message' => 'required|min:5',
]);
Message::create($validatedData);
return redirect('/')->with('success', 'Your message has been
successfully sent. We will reach out to you soon');
}
}
contact.blade.php
{{--CONTACT FORM--}}
<section id="contact">
<div class="container-fluid padding">
<div class="row text-center padding">
<div class="col-12">
<h2 class="lead display-3">Contact Us</h2>
<hr class="my-4">
<form action="/contact/submit" method="POST">
@csrf
<div class="field">
<label for="name" class="label">Name</label>
<div class="control">
<input type="text" class="input {{$errors->has('name') ? 'is-danger' : 'is-success'}}"
name="name" placeholder="Project Title" value="{{old('name')}}">
</div>
</div>
<div class="field">
<label for="name" class="label">Email</label>
<div class="control">
<input type="text" class="input {{$errors->has('email') ? 'is-danger' : 'is-success'}}"
name="email" placeholder="Project Title" value="{{old('email')}}">
</div>
</div>
<div class="field">
<label for="name" class="label">Phone Number</label>
<div class="control">
<input type="text"
class="input {{$errors->has('phonenumber') ? 'is-danger' : 'is-success'}}"
name="phonenumber" placeholder="Project Title" value="{{old('phonenumber')}}">
</div>
</div>
<div class="field">
<label for="message" class="label">Message</label>
<div class="control">
<textarea name="message"
class="textarea {{$errors->has('message') ? 'is-danger' : 'is-success'}}"
placeholder="Project description">{{old('message')}}</textarea>
</div>
</div>
<div class="field">
<div class="control">
<button type="submit" class="button is-link">Create Project</button>
</div>
</div>
<!--Errors variable used from form validation -->
@if($errors->any())
<div class="notification is-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
</form>
</div>
</div>
</div>
</section>
【问题讨论】:
-
我尝试用“return back()-with()....”替换我的控制器中当前的 return 语句,但是当我尝试提交无效表单时页面仍会转到主页.错误消息正确显示,但我必须一直向下滚动页面才能查看错误消息。
标签: laravel laravel-blade