o。我需要解决这个问题。我在blade.php文件中有一个联系表格,我在我的web.php文件中设置了一个路由,并且我设置了一个从web.php文件路由的控制器,并且要在字段上执行验证并显示提交表单时页面上的闪存消息。目前,该表格已正确提交到我的数据库中,因此它可以正常工作,但是如果我提交空白表格,则该验证的工作原理(laravel(也无法(laravel(,并且在成功提交表单时不会显示闪存消息:p>代码:
web.php
<?php
Route::get('/', 'HomeController@index')->name('home');
Route::post('/contact/submit','MessagesController@submit');
MessagsController.php
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppMessage;
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', 'Message has been sent');
}
}
contact.blade.php
{{--CONTACT FORM--}}
<section id="contact">
<div class="container-fluid padding">
<div class="row text-center padding">
<div class="col-12">
<h2>Contact PDMA</h2>
</div>
<div class="col-12 padding">
{!! Form::open(['url' => 'contact/submit']) !!}
@csrf
<div class="form-group">
{{Form::label("name", 'Name')}}
{{Form::text('name', '', ['class' => 'form-control', 'placeholder' => 'Enter name'])}}
</div>
<div class="form-group">
{{Form::label("email", 'E-Mail Address')}}
{{Form::text('email', '', ['class' => 'form-control', 'placeholder' => 'Enter email'])}}
</div>
<div class="form-group">
{{Form::label("phonenumber", 'Phone Number')}}
{{Form::text('phonenumber', '', ['class' => 'form-control', 'placeholder' => 'Enter phone number'])}}
</div>
<div class="form-group">
{{Form::label("message", 'Message')}}
{{Form::textarea('message', '', ['class' => 'form-control', 'placeholder' => 'Enter message'])}}
</div>
<div>
{{Form::submit('Submit Form', ['class' => 'btn btn-success'])}}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</section>
只需使用会话:您的控制器中的第一个导入会话类
use Session;
Message::create($validatedData);
Session::flash('success', 'Message has been sent');
return redirect('/')
然后在View文件夹中创建一个Blade文件,您可以随时调用它,例如:notify.blade.php
@if (Session::has('success'))
<div class="alert alert-success" role="alert" style="bottom:10px; position: fixed; left:2%; z-index:100">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<h4 class="alert-heading">Well done!</h4>
<p>{{ Session::get('success') }}</p>
</div>
@endif
@if (Session::has('danger'))
<div class="alert alert-danger" role="alert" style="bottom:10px; position: fixed; left:2%; z-index:100">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<h4 class="alert-heading">Error!</h4>
<p>{{ Session::get('danger') }}</p>
</div>
@endif
finaly,将此文件包括在任何视图中。
include('notify')
正如利弗森建议为会话创建刀片文件另一件事,您还可以捕获错误并使用另一个刀片更改输入样式。
@if($errors->any())
<div class="alert alert-danger" role="alert">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
对于表格,您可以将{{$errors->has('name') ? 'is-danger' : ''}}
添加到Div类
例如
<div class="form-row text-left">
<label for="name" class="col-md-3">Name</label>
<div class="col-md-9">
<input type="text" name="name" class="input {{$errors->has('name') ? 'is-danger' : ''}}" required
value= @if(isset($user))"{{$user->name}}"@else "{{old('name')}}"@endif>
</div>
</div>
https://laracasts.com/series/laravel-from-scratch-2018/episodes/15