Laravel перенаправление назад или маршрут с сообщением не работает - PullRequest
0 голосов
/ 29 марта 2020

У меня проблема с redirect()->route()->with() или redirect()->back()->with(). Это перенаправление, но без сообщения fla sh.

Я могу создать отдельные сообщения fla sh, а затем перенаправить, но я хочу знать, есть ли какая-либо проблема в моем коде или это так работает?

Не работает

publi c функция destroy (User $ user) {$ userId = $ user-> id;

if ($user->id == 1 || $user->is('super') || $user->isRoot($user)) {

    return redirect()->back()->with('error', 'Cannot delete the user. The user may be a super or root user.');

} else {

    if (User::destroy($user->id)) {

        return redirect()->route('admin.users.index')->with('success', 'User deleted successfully.');

    } else {
        return redirect()->back()->with('error', 'Cannot delete the user.');
    }

}

Рабочий код

public function destroy(User $user)
{
    $userId = $user->id;

    if ($user->id == 1 || $user->is('super') || $user->isRoot($user)) {

        Session::flash('error', 'Cannot delete the user. The user may be a super or root user.');

        return redirect()->back();

    } else {

        if (User::destroy($user->id)) {

            Session::flash('success', 'User #' . $userId . ' is deleted successfully.');

            return redirect()->route('admin.users.index');

        } else {
            Session::flash('error', 'Cannot delete the user.');

            return redirect()->back();
        }

    }
}

Я также пытался использовать withError и withSuccess, но ни один из них не работает.

Ответы [ 3 ]

0 голосов
/ 29 марта 2020

with('error') это магазин в сеансе. если веб-связующее ПО не применяется к вашему маршруту, вы не получите сообщение об ошибке.

Проверьте php artisan route:list, чтобы убедиться, что веб-связующее ПО присутствует на всех ваши маршруты и что он применяется только один раз.

отметьте ответ это может быть полезно для вас.

0 голосов
/ 29 марта 2020

Ваш первый код кажется правильным, это должно быть проблемой в вашем блейд-файле. Попробуйте что-то вроде этого

@if (session('error')) <div class="alert alert-danger"> {{ session('error') }} </div> @endif

0 голосов
/ 29 марта 2020

Он попытался использовать этот код и получил результаты. Я думаю, что есть проблема с вашим кодом лезвия.

Контроллер

public function destroy(User $user) { 
$userId = $user->id;

if ($user->id == 1 || $user->is('super') || $user->isRoot($user)) {

    return redirect()->back()->with('error', 'Cannot delete the user. The user may be a super or root user.');

} else {

    if (User::destroy($user->id)) {

        return redirect()->route('admin.users.index')->with('success', 'User deleted successfully.');

    } else {
        return redirect()->back()->with('error', 'Cannot delete the user.');
    }

}

Blade

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

            <div class="alert alert-danger mt-2">{{ Session::get('error') }} 
            </div>

            @endif

Результат

Result

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