Laravel 5.2 перенаправляет назад сообщение об успешном завершении

Я пытаюсь получить сообщение об успешной работе на моей домашней странице на laravel.

return redirect()->back()->withSuccess('IT WORKS!');

По какой-то причине переменная $success не получает никакого значения после запуска этого кода.

Код, который я использую для отображения сообщения succes:

@if (!empty($success))
    <h1>{{$success}}</h1>
@endif

Я добавил домашнюю страницу и страницу информационного бюллетеня в группу промежуточного программного обеспечения веб-сайта в routes.php следующим образом:

Route::group(['middleware' => 'web'], function () {
    Route::auth();

    Route::get('/', function () {
        return view('home');
    });

    Route::post('/newsletter/subscribe','[email protected]');
});

Кто-нибудь знает, почему это не работает?

Ответы

Ответ 1

Вы должны удалить web промежуточное ПО из routes.php. Добавление web промежуточного программного обеспечения вручную вызывает проблемы с сеансом и запросами в Laravel 5.2.27 и выше.

Если это не помогло (по-прежнему сохраняйте routes.php без промежуточного программного обеспечения в Интернете), вы можете попробовать немного другой подход:

return redirect()->back()->with('message', 'IT WORKS!');

Отображение сообщения, если оно существует:

@if(session()->has('message'))
    <div class="alert alert-success">
        {{ session()->get('message') }}
    </div>
@endif

Ответ 2

вы можете использовать это:

return redirect()->back()->withSuccess('IT WORKS!');

и используйте это в своем представлении:

@if(session('success'))
    <h1>{{session('success')}}</h1>
@endif

Ответ 3

Все вышесказанное верно, но попробуйте этот прямой однострочный:

{{session()->has('message')? session()->get('message'): ''}}

Ответ 4

Один из способов сделать это - отправить сообщение в сеансе следующим образом:

контроллер:

return redirect()->back()->with('success', 'IT WORKS!');

Вид:

@if (session()->has('success'))
    <h1>{{ session('success') }}</h1>
@endif

И другой способ сделать это - просто создать сеанс и прямо поместить текст в виде:

Контроллер:

return redirect()->back()->with('success', true);

Вид:

@if (session()->has('success'))
    <h1>IT WORKS!</h1>
@endif

Вы можете проверить полную документацию здесь: Перенаправление с данными с разбитыми сеансами

Я надеюсь, что это очень полезно.

Ответ 5

контроллер:

return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);

лопасть

@if (session()->has('success'))
    <div class="alert alert-success">
        @if(is_array(session()->get('success')))
        <ul>
            @foreach (session()->get('success') as $message)
                <li>{{ $message }}</li>
            @endforeach
        </ul>
        @else
            {{ session()->get('success') }}
        @endif
    </div>
@endif

Вы всегда можете сохранить эту часть как отдельный блейд файл и легко включить его. передний пример:

<div class="row">
        <div class="col-md-6">
            @include('admin.system.success')
            <div class="box box-widget">

Ответ 6

В контроллере

return redirect()->route('company')->with('update', 'Content has been updated successfully!');

Ввиду

@if (session('update'))
  <div class="alert alert-success alert-dismissable custom-success-box" style="margin: 15px;">
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
     <strong> {{ session('update') }} </strong>
  </div>
@endif

Ответ 7

Я разрабатываю проект asp.net core 2.1, и мне нужно включить большие загрузки файлов на мой сервер. Любая помощь.

Ответ 8

Вы можете использовать laravel MessageBag для добавления наших собственных сообщений в существующие сообщения.

Для использования MessageBag вам необходимо использовать:

use Illuminate\Support\MessageBag;

В контроллере:

MessageBag $message_bag

$message_bag->add('message', trans('auth.confirmation-success'));

return redirect('login')->withSuccess($message_bag);

Надеюсь, это поможет кому-нибудь.

  • Adi