Флэш-сообщения отображаются, а иногда нет - PullRequest
0 голосов
/ 12 апреля 2019

Я использую spatie/laravel-flash для отображения некоторых флеш-сообщений. Это работает, когда я использую простые формы HTML, но когда я использую шаблоны Vue.js, сообщение не отображается. (а иногда и нет) после отправки формы и перехода к следующему запросу.

основной макет

<div class="col-lg-12 mb-2">
    @include('layouts.partials.flash_message')
</div>
<section class="py-5">
    @yield('content')
</section>

layouts.partials.flash_message

@if(flash()->message)
    <div class="{{ flash()->class }} alert-dismissible" role="alert">
        <button type="button" class="close close-white" data-dismiss="alert">×</button>
        {{ flash()->message }}
    </div>
@endif

create.blade.php

@extends('layouts.main_layout')
@section('content')   
    <create-school> </create-school>
@endsection

Метод хранилища шаблонов Vue.js ()

store()
{
    axios.post('/master/schools', {
        name: this.name,
    }.then((response) => {
        this.name = ''
    }));
}

Метод магазина Laravel

<?php

public function store(Request $request)
{
    $school = School::create([
        'name' => $request->name,
    ]);

    flash('success message', 'alert alert-success');

    return back();
}

1 Ответ

0 голосов
/ 12 апреля 2019

Поскольку вы используете ajax для хранения своих данных, вам нужно будет предоставить сообщение в качестве ответа на этот запрос. Таким образом, метод store на вашем контроллере будет выглядеть как

public function store(Request $request)
{
    $school = School::create([
        'name' => $request->name,
    ]);

    return response($school, 201);
}

201 - это HTTP-код, указывающий на то, что ресурс был создан, и с помощью RFC вы должны вернуть ресурс в ответе.

В вашем файле Vue метод store будет

store()
{
    axios.post('/master/schools', {
        name: this.name,
    }.then((response) => {
        this.name = ''
        // Modify your DOM or alert the user
        alert('Resource created')
    }));
}

В качестве рекомендации вы должны всегда проверять пользовательский ввод перед сохранением.

...