Flash-сообщение Laravel 5.2 с использованием материализации тоста

вы можете помочь мне решить эту проблему? поэтому в этом случае я хочу показать флэш-сообщение на следующей странице после нажатия кнопки и действия (сохранить, обновить, удалить) успешно выполнить...

я прочитал это https://www.tutorialspoint.com/materialize/materialize_dialogs.htm, а также http://materializecss.com/dialogs.html, но не знаю, как использовать его в мой контроллер

public function hapuskeluhan($id){

    $keluh = keluhan::findOrFail($id);
    $keluh->delete();                
    return redirect('lihatkeluhan');
}

Например, функция удаления, как мой тост мог появиться до перенаправления? или может после? Пожалуйста, помогите мне, брат


person Christianus Andre    schedule 03.04.2017    source источник
comment
Мой совет — использовать флеш-сессию: laravel.com/docs/5.4/session#flash-data   -  person Thanh Nguyen    schedule 03.04.2017
comment
привет @nguyen Thanh, я пробовал этот вариант, но, к сожалению, он у меня не работает, не знаю, почему даже это не ошибка, не могли бы вы помочь мне шаг за шагом? Потому что, может быть, я что-то пропустил   -  person Christianus Andre    schedule 03.04.2017


Ответы (3)


Попробуй это

@if(session('message'))
        <script>
          Materialize.toast("{{ @session('message') }}", 5000);  
        </script>

        @endif
person Mohammad Arshad    schedule 15.05.2017

Я думаю, вам нужно передать сообщение вместе с перенаправлением, которое будет отображаться в представлении.

public function hapuskeluhan($id)
{
    $keluh = keluhan::findOrFail($id);
    $keluh->delete();                
    return redirect('lihatkeluhan')->with(['message', 'Record Deleted!']);
}

и, по вашему мнению, вы можете получить доступ к сообщению переменной сеанса как

Materialize.toast({{ session('message') }}, duration, 'rounded');

и инициировать щелчок, чтобы тост отображался

$(document).ready(function () {

    $("your element containing materialize handle").click();

});
person linktoahref    schedule 03.04.2017

Ответ @Mohammad Arshad правильный. Спасибо.

Просто чтобы прояснить ситуацию, я поместил свой код ниже, чтобы сообщить о входе в систему.

Если вы хотите работать с цветами, например, при успешном входе в систему (зеленый) или неудачном входе в систему (красный). Просто заполните третий параметр материализации тоста «зеленым» или «красным» соответственно.

В файле UserController.php:

<?php

namespace App\Http\Controllers\Login;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use Hash;
use App\User;

class UserController extends Controller
{

    public function login(Request $request)
    {

        $data = $request->all();

        if(Auth::attempt([ 'email'=>$data['email'], 'password'=>$data['password'] ]))
        {

            \Session::flash('message', ['msg'=>'Login done successfully!', 'class'=>'green']);

            return redirect()->route('user.index');

        }

        \Session::flash('message', ['msg'=>'Login failed. Check your data.', 'class'=>'red']);

        return redirect()->route('user.index');

    }

}

В файле site.blade.php:

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="iso-8859-1">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>{{ config('site.name', 'YourSite') }}</title>

        <link rel="stylesheet" type="text/css" href="{{ asset('lib/materialize/dist/css/materialize.css') }}">
        <link rel="stylesheet" type="text/css" href="{{ asset('css/style.css') }}">

        <!-- Styles -->
        <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    </head>
    <body>

        <header>
            @include('yourHeaderCode._site._nav')
        </header>

        <main>

            <!-- Your main code -->
            @yield('content')

        </main>

        @include('yourFooterCode._site._footer')

        <!-- Scripts -->
        <script src="{{ asset('lib/jquery/dist/jquery.js') }}"></script>
        <script src="{{ asset('lib/materialize/dist/js/materialize.js') }}"></script>

        @if(Session::has('message'))
            <script type="text/javascript">
                Materialize.toast("{{ Session::get('message')['msg'] }}", 4000, "{{ Session::get('mensagem')['class'] }}");
            </script>
        @endif()

    </body>
</html>
person Alexandre Ribeiro    schedule 08.08.2018