Я делаю свое первое приложение на Laravel и пытаюсь разобраться с флеш-сообщениями сеанса. Насколько мне известно, в действии моего контроллера я могу установить флэш-сообщение, выбрав
Redirect::to('users/login')->with('message', 'Thanks for registering!'); //is this actually OK?
В случае перенаправления на другой маршрут, или
Session::flash('message', 'This is a message!');
В моем главном шаблоне клинка я бы имел:
@if(Session::has('message'))
<p class="alert alert-info">{{ Session::get('message') }}</p>
@endif
Как вы уже заметили , я использую Bootstrap 3 в моем приложении и хотел бы использовать из различных классов сообщений: alert-info
, alert-warning
, и alert-danger
т.д.
Предполагая, что в моем контроллере я знаю, какой тип сообщения я устанавливаю, как лучше всего передать и отобразить его в представлении? Должен ли я устанавливать отдельное сообщение в сеансе для каждого типа (например Session::flash('message_danger', 'This is a nasty message! Something's wrong.');
)? Тогда мне понадобится отдельный оператор if для каждого сообщения в моем шаблоне лезвия.
Любые советы приветствуются.
Ответы:
Одним из решений было бы добавить в сеанс две переменные:
например:
Тогда, на ваш взгляд:
Обратите внимание, что я установил значение по умолчанию в
Session::get()
. таким образом вам нужно только переопределить его, если предупреждение должно быть чем-то другим, кромеalert-info
класса.(это быстрый и непроверенный пример :))
источник
Session::get()
который очень пригодится.На ваш взгляд:
Затем установите флэш-сообщение в контроллер:
источник
Мой способ - всегда Redirect :: back () или Redirect :: to ():
У меня есть вспомогательная функция, чтобы она работала для меня, обычно она находится в отдельной службе:
И на мой взгляд или макет я просто делаю
источник
$type = $type == 'error' : 'danger';
Вы можете сделать несколько сообщений и разных типов. Выполните следующие действия:
app/Components/FlashMessages.php
"app/Http/Controllers/Controller.php
".Это сделает
FlashMessages
трейт доступным для всех контроллеров, расширяющих этот класс.views/partials/messages.blade.php
"boot()
" методе "app/Providers/AppServiceProvider.php
":Это сделает
$messages
переменную доступной для "views/partials/message.blade.php
" шаблона при каждом его вызове.views/partials/messages.blade.php
"Вам нужно только включить шаблон сообщений везде, где вы хотите отображать сообщения на своей странице.
Надеюсь, это поможет тебе.
источник
Просто вернитесь с «флагом», который вы хотите лечить, без использования каких-либо дополнительных пользовательских функций. Контроллер:
Обратите внимание, что я использовал флаг «Успех».
Вид:
Да, действительно работает!
источник
Другое решение - создать вспомогательный класс. Как здесь создать вспомогательные классы.
Тогда ты сможешь это сделать.
или
и на ваш взгляд
источник
Не большой поклонник предлагаемых решений (например: несколько переменных, вспомогательные классы, цикл «возможно существующие переменные»). Ниже представлено решение, в котором вместо двух отдельных переменных используется массив. Его также легко расширить для обработки нескольких ошибок, если вы захотите, но для простоты я сохранил его в одном флэш-сообщении:
Перенаправление с массивом флеш-сообщений :
Вывод на основе содержимого массива:
Не имеет отношения, поскольку у вас может быть свой собственный метод / плагин уведомлений - но для ясности - bootstrapNotify - это просто инициирование bootstrap-notify с http://bootstrap-notify.remabledesigns.com/ :
источник
Для своего приложения я сделал вспомогательную функцию:
Структура сообщения,
main.layouts.message
:и импортировать везде, где будет отображаться сообщение:
источник
Я обычно делаю это
в моей функции store () я помещаю предупреждение об успешном завершении, когда оно правильно сохранено.
в моей функции destroy () я хотел покрасить предупреждение в красный цвет, чтобы уведомить, что оно удалено
Обратите внимание, мы создаем два предупреждения с разными именами вспышек.
И на мой взгляд, я добавлю условие, когда в нужное время будет вызвано конкретное предупреждение.
Здесь вы можете найти различные стили флеш-сообщений Флэш-сообщения в Laravel 5
источник
Вы можете использовать макросы Laravel.
Вы можете творить
macros.php
вapp/helpers
и включить его routes.php.если вы хотите вместо этого поместить свои макросы в файл класса, вы можете посмотреть это руководство: http://chrishayes.ca/blog/code/laravel-4-object-oriated-form-html-macros-classes-service- провайдер
В вашем контроллере:
В вашем представлении
источник
Я думаю, что следующее будет хорошо работать с меньшей строкой кода.
Я использую пакет тостера, но у вас может быть что-то вроде этого в вашем представлении.
источник
В контроллере:
Или
в Blade показать сообщение в Blade As ur Desired Pattern:
источник
Просто отправьте в сеансе массив, а не строку, например:
источник
Я наткнулся на этот элегантный способ прошивки сообщений. Его сделал Джеффри Уэй из Laracast. проверьте это ... https://github.com/laracasts/flash
источник
Если вы хотите использовать Bootstrap Alert, чтобы сделать ваше представление более интерактивным. Вы можете сделать что-то вроде этого:
В вашей функции: -
По вашему мнению: -
источник