Saya membuat aplikasi pertama saya di Laravel dan mencoba memahami pesan flash sesi. Sejauh yang saya ketahui dalam tindakan pengontrol saya, saya dapat mengatur pesan flash baik dengan pergi
Redirect::to('users/login')->with('message', 'Thanks for registering!'); //is this actually OK?
Untuk kasus pengalihan ke rute lain, atau
Session::flash('message', 'This is a message!');
Dalam template master blade saya, saya akan memiliki:
@if(Session::has('message'))
<p class="alert alert-info">{{ Session::get('message') }}</p>
@endif
Seperti Anda mungkin telah memperhatikan Saya menggunakan Bootstrap 3 di app saya dan ingin memanfaatkan kelas pesan yang berbeda: alert-info
, alert-warning
, alert-danger
dll
Dengan asumsi bahwa di pengontrol saya, saya tahu jenis pesan apa yang saya setel, apa cara terbaik untuk meneruskan dan menampilkannya dalam tampilan? Haruskah saya menetapkan pesan terpisah dalam sesi untuk setiap jenis (misalnya Session::flash('message_danger', 'This is a nasty message! Something's wrong.');
)? Maka saya memerlukan pernyataan if terpisah untuk setiap pesan di template blade saya.
Setiap saran dihargai.
Jawaban:
Salah satu solusinya adalah mem-flash dua variabel ke dalam sesi:
sebagai contoh:
Kemudian dalam pandangan Anda:
Catatan Saya telah memasukkan nilai default ke file
Session::get()
. dengan cara itu Anda hanya perlu menggantinya jika peringatan harus berupa sesuatu selainalert-info
kelas.(itu adalah contoh singkat, dan belum teruji :))
sumber
Session::get()
Itu akan sangat berguna.Dalam pandangan Anda:
Kemudian atur pesan flash di pengontrol:
sumber
Cara saya adalah selalu Redirect :: back () atau Redirect :: to ():
Saya memiliki fungsi pembantu untuk membuatnya berfungsi untuk saya, biasanya ini ada dalam layanan terpisah:
Dan dalam tampilan atau tata letak saya, saya hanya melakukannya
sumber
$type = $type == 'error' : 'danger';
Anda dapat membuat banyak pesan dan dengan jenis yang berbeda. Ikuti langkah-langkah berikut ini:
app/Components/FlashMessages.php
"app/Http/Controllers/Controller.php
".Ini akan membuat
FlashMessages
sifat tersedia untuk semua pengontrol yang memperluas kelas ini.views/partials/messages.blade.php
"boot()
" metode "app/Providers/AppServiceProvider.php
":Ini akan membuat
$messages
variabel tersedia untukviews/partials/message.blade.php
template " " setiap kali dipanggil.views/partials/messages.blade.php
"Anda hanya perlu menyertakan template pesan di mana pun Anda ingin menampilkan pesan di halaman Anda.
Semoga bisa membantu Anda.
sumber
Cukup kembalikan dengan 'bendera' yang ingin Anda perlakukan tanpa menggunakan fungsi pengguna tambahan. Pengendali:
Perhatikan bahwa saya menggunakan tanda 'Sukses'.
Pandangan:
Ya, ini benar-benar berhasil!
sumber
Solusi lain adalah membuat kelas pembantu. Cara Membuat kelas pembantu di sini
Maka Anda bisa melakukan ini.
atau
dan menurut pandanganmu
sumber
Bukan penggemar berat solusi yang disediakan (yaitu: banyak variabel, kelas pembantu, perulangan melalui 'variabel yang mungkin ada'). Di bawah ini adalah solusi yang menggunakan array sebagai lawan dari dua variabel terpisah. Ini juga dapat dengan mudah diperpanjang untuk menangani beberapa kesalahan jika Anda inginkan tetapi untuk kesederhanaan, saya menyimpannya ke satu pesan kilat:
Redirect dengan larik pesan flash :
Output berdasarkan konten array:
Tidak terkait karena Anda mungkin memiliki metode / plugin notifikasi Anda sendiri - tetapi hanya untuk kejelasan - bootstrapNotify hanya untuk memulai bootstrap-notify dari http://bootstrap-notify.remabledesigns.com/ :
sumber
Untuk aplikasi saya, saya membuat fungsi pembantu:
tata letak pesan,
main.layouts.message
:dan impor setiap tempat untuk menampilkan pesan:
sumber
Saya biasanya melakukan ini
di fungsi store () saya, saya memberi peringatan sukses setelah disimpan dengan benar.
dalam fungsi destroy () saya, saya ingin memberi warna merah peringatan untuk memberi tahu bahwa itu dihapus
Perhatikan, kami membuat dua peringatan dengan nama flash berbeda.
Dan dalam pandangan saya, saya akan menambahkan ketentuan kapan waktu yang tepat peringatan tertentu akan dipanggil
Di sini Anda dapat menemukan pesan flash yang berbeda stlyes Pesan Flash di Laravel 5
sumber
Anda bisa menggunakan Laravel Macros.
Anda dapat membuat
macros.php
dalamapp/helpers
dan memasukkannya routes.php.jika Anda ingin meletakkan makro Anda dalam file kelas, Anda dapat melihat tutorial ini: http://chrishayes.ca/blog/code/laravel-4-object-oriented-form-html-macros-classes-service- pemberi
Di pengontrol Anda:
Dalam Pandangan Anda
sumber
Saya pikir berikut ini akan bekerja dengan baik dengan baris kode yang lebih sedikit.
Saya menggunakan paket pemanggang roti, tetapi Anda dapat melihat sesuatu seperti ini dalam pandangan Anda.
sumber
Dalam Pengontrol:
Atau
di Blade show pesan di Blade As ur Desired Pattern:
sumber
Kirimkan saja sebuah array dalam sesi daripada sebuah string, seperti ini:
sumber
Saya menemukan cara yang elegan untuk mem-flash pesan. Itu dibuat oleh Jeffrey Way dari Laracast. periksa ... https://github.com/laracasts/flash
sumber
Jika Anda ingin menggunakan Peringatan Bootstrap untuk membuat tampilan Anda lebih interaktif. Anda bisa melakukan sesuatu seperti ini:
Dalam fungsi Anda: -
Dalam pandangan Anda: -
sumber