dimanche 15 avril 2018

Laravel won't return "failed" session on mail send

As first, that contact form works. When all data are valid, it works properly. 'success' session message works as well.

But, if I miss some of required data. Nothing is happend. On click on submit, page is reloaded, email isn't send (expected), but from some reason laravel don't return 'failed' session message.

Form

    <div class="row">
    <div class="col-12">
        <form action="" method="POST">
        
            <div class="row">
                <div class="form-group col-md-6">
                    <input class="form-control" name="name" id="name" placeholder="Ime i prezime *">
                </div>
                <div class="form-group col-md-6">
                    <input class="form-control" name="email" id="email" placeholder="Email *">
                </div>
                <div class="form-group col-md-6">
                    <input class="form-control" name="telephone" id="telephone" placeholder="Broj telefona">
                </div>
                <div class="form-group col-md-6">
                    <input class="form-control" name="website" id="website" placeholder="Adresa Web stranice">
                </div>
                <div class="form-group col-md-12">
                    <input class="form-control" name="subject" id="subject" placeholder="Naslov poruke">
                </div>
                <div class="form-group col-md-12">
                    <textarea class="form-control" rows="6" name="message" id="message" placeholder="Tekst poruke"></textarea>
                </div>
                <div class="col-md-12">
                    <button type="submit" class="btn btn-default submit btn-block"><i class="fa fa-paper-plane" aria-hidden="true"></i>Pošalji mail</button>
                </div>
            </div>
        </form>
    </div>
    @if (Session::has('success') || Session::has('failed'))
      <div class="col-12">
        @include('partials/_messages')
      </div>
    @endif
</div>

Partials (messages)

@if (Session::has('success'))

    <div class="alert alert-success" role="alert">
        <strong>Bravo:</strong> {!! Session::get('success') !!}
    </div>

@endif

@if (Session::has('failed'))

    <div class="alert alert-danger" role="alert">
        <strong>Pozor:</strong> {!! Session::get('failed') !!}
    </div>

@endif

@if (count($errors) > 0)

    <div class="alert alert-danger" role="alert">
        <strong>Pogreška:</strong>
        <ul>
        @foreach ($errors->all() as $error)

            <li></li>

        @endforeach
        </ul>
    </div>

@endif

Controller

public function postContact(Request $request) {
    $this->validate($request, array(
        'name' => 'required|max:50',
        'email' => 'required|email',
        'telephone' => 'max:50',
        'website' => 'max:50',
        'subject' => 'min:3',
        'message' => 'required|min:5'
    ));

    $data = array(
        'name' => $request->name,
        'email' => $request->email,
        'telephone' => $request->telephone,
        'website' => $request->website,
        'subject' => $request->subject,
        'bodyMessage' => $request->message
    );

    Mail::send('emails/contact', $data, function($message) use ($data){
        $message->from($data['email']);
        $message->to('no-replay@mail.eu');
        $message->subject($data['subject']);
    });

    Session::flash('success', 'Poruka je uspješno poslana!');

    return redirect()->route('website.index');
}



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire