刀片表单未显示闪存消息,也没有在表单字段上执行验证



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">&times;</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">&times;</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

最新更新