Форма блэйда не показывает флэш-сообщение и не выполняет проверку в полях формы - PullRequest
0 голосов
/ 18 мая 2019

O. Мне нужна помощь с этой проблемой. У меня есть контактная форма в файле blade.php, у меня есть маршрут, настроенный в моем файле web.php, и у меня есть настроенный контроллер, который маршрутизируется из файла web.php и должен выполнять проверку полей и отображения быстрое сообщение на странице при отправке формы. Сейчас форма правильно отправляется в мою базу данных, поэтому она работает, но если я отправляю пустую форму, проверка не работает должным образом (laravel), а также флэш-сообщение не отображается при успешной отправке формы:

КОД:

Web.php

<?php 
    Route::get('/', 'HomeController@index')->name('home');
    Route::post('/contact/submit','MessagesController@submit');

MessagesController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Message;


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>

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Как предложил Ливерсон, создайте файл блейда для сеанса. Также вы можете перехватить ошибку и изменить стиль ввода с помощью другого блейда, например error.blade.php, и включить его в форму

* 1002.*

Для формы вы можете добавить {{$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

1 голос
/ 18 мая 2019

Просто используйте сессию: Первый класс сеанса импорта в вашем контроллере

 use Session;

 Message::create($validatedData);
 Session::flash('success', 'Message has been sent');
 return redirect('/')

Затем создайте блейд-файл в папке просмотра, вы можете называть его как угодно, например: 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

Наконец, включите этот файл в любое представление.

include('notify')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...