


Menggunakan data JSON dengan cekap untuk melaksanakan menu drop-down cascading dalam templat bilah laravel
Dalam pembangunan aplikasi web moden, sering diperlukan untuk memuatkan data dari sumber bukan data seperti fail JSON tempatan dan membentangkannya kepada pengguna, terutama ketika membina bentuk dinamik atau pemilih data. Rangka kerja Laravel menyediakan mekanisme ringkas untuk menangani keperluan tersebut. Artikel ini akan membimbing anda tentang cara mengintegrasikan data JSON ke dalam pandangan bilah Laravel dan selanjutnya melaksanakan menu drop-down berkait pelbagai peringkat.
1. Memuatkan dan menghuraikan data JSON
Pertama, anda perlu membaca dan menghuraikan fail JSON dalam pengawal Laravel. Ini biasanya dilakukan dengan cara yang mengendalikan rendering pandangan.
Php App Namespace \ http \ controllers; Gunakan Illuminate \ http \ request; Kelas UserController memanjangkan pengawal { /** * Memaparkan pandangan untuk membuat borang pengguna. * * @return \ Illuminate \ view \ view */ Fungsi Awam Buat () { // Membina laluan penuh fail json // fungsi base_path () mengembalikan laluan mutlak direktori root projek $ jsonfilePath = base_path ('sumber/data/alamat.json'); // periksa jika fail wujud untuk mengelakkan kesilapan jika (! File_exists ($ jsonfilePath)) { // Mengendalikan kesilapan yang tidak wujud dalam fail mengikut keadaan sebenar, seperti membuang pengecualian atau mengembalikan mesej ralat kembali ()-> withErrors ('fail data json tidak wujud!'); } // Baca kandungan fail json $ jsonstring = file_get_contents ($ jsonfilePath); // Decode rentetan json ke dalam array php // parameter kedua benar bermakna menyahkod objek json ke dalam array bersekutu, dan bukannya objek $ butiran = json_decode ($ jsonstring, true); // Periksa sama ada penyahkodan berjaya jika (json_last_error ()! == json_error_none) { // Mengendalikan kesilapan parsing JSON kembali ()-> WithErrors ('JSON Data Parsing gagal:'. JSON_LAST_ERROR_MSG ()); } // lulus data yang dihuraikan ke paparan pulangan paparan ('users.create')-> dengan ('butiran', $ butiran); } }
menggambarkan:
- base_path ('sumber/data/alamat.json'): Laluan mutlak yang digunakan untuk mendapatkan fail JSON. Adalah disyorkan untuk meletakkan fail data statik dalam direktori sumber untuk pengurusan mudah.
- file_get_contents (): Baca keseluruhan fail ke rentetan.
- JSON_DECODE ($ JSONSTRING, BENAR): Decode rentetan JSON ke dalam pembolehubah PHP. Melewati parameter yang benar menukarkan objek JSON ke dalam array bersekutu, yang lebih mudah apabila mengakses data melalui nama utama dalam templat bilah.
- Pengendalian ralat: Menambah pemeriksaan kewujudan fail dan pemeriksaan ralat penyahkodan JSON, yang merupakan bahagian yang diperlukan dari kod yang mantap dalam persekitaran pengeluaran.
2. Paparan data dalam templat bilah (menu drop-down asas)
Dalam paparan bilah, anda boleh menggunakan gelung @foreach untuk berulang di atas array yang diluluskan oleh pengawal dan menjana tag HTML
Katakan struktur fail alamat.json anda adalah seperti berikut:
[ { "Wilayah": "Wilayah Kesatuan Naypyitaw", "Town": "Za Bu Thi Ri Township", "Suku": "Zay Ya Theik Di Quarter", "Kod Pos": 1501001 }, { "Wilayah": "Wilayah Kesatuan Naypyitaw", "Town": "Za Bu Thi Ri Township", "Suku": "Pyin Nyar Theik Di Quarter", "Kod Pos": 1501002 } ]
Dalam fail pengguna/create.blade.php, anda boleh memaparkan menu lungsur rantau seperti ini:
<label untuk="rantau"> rantau: </label> <pilih name="rantau" id="rantau" class="form-control"> <opsyen nilai=""> Sila pilih kawasan {{-Gunakan array_unique untuk memastikan kawasan itu tidak diulang-}} @Foreach ($ butiran-> unik ('rantau') sebagai detail $) <option value="{{$ detail ['region']}}"> {{$ detail ['region']}} </option> @endforeach </opsyen></pilih>
menggambarkan:
- Butiran $ adalah keseluruhan data JSON yang diluluskan dari pengawal.
- $ Butiran-> Unik ('Wilayah'): Untuk mengelakkan pilihan rantau duplikat dalam menu lungsur, kita boleh menggunakan kaedah unik () koleksi Laravel dalam bilah. Ini memerlukan pembolehubah Butiran $ adalah koleksi Laravel (boleh ditukar dalam pengawal melalui Collect ($ butiran) atau secara langsung dalam bilah menggunakan Collect ($ Butiran)-> Unik ('Wilayah')). Jika butiran $ hanyalah array PHP biasa, anda perlu mengendalikan deduplikasi dalam pengawal atau deduplikasi secara manual dalam bilah.
- $ detail ['rantau']: Oleh kerana json_decode menggunakan parameter sebenar, $ detail adalah array bersekutu, kuncinya diakses melalui kurungan persegi [].
3. Melaksanakan menu drop-down cascading (interaksi JavaScript)
Untuk melaksanakan fungsi cascading "Jika pengguna memilih kawasan tertentu, hanya perbandaran di bawah kawasan tersebut dipaparkan", kita perlu menggabungkan JavaScript. Pendekatan yang sama adalah lulus semua data ke hujung depan sekaligus dan kemudian menapis dan mengisi klien melalui JavaScript.
3.1 Sediakan data front-end
Agar JavaScript untuk mengakses data butiran $, kita perlu menukarnya ke format yang tersedia dalam JavaScript, biasanya rentetan JSON, dan tertanam dalam tag
<script> // Tukar array PHP ke rentetan JSON dan berikannya kepada pembolehubah JavaScript const alldetails = @json ($ butiran); // atau gunakan json.parse ('{!! json_encode ($ butiran) !!}'); Sekiranya pelarian ketat diperlukan <label untuk = "rantau"> rantau: <pilih name = "rantau" id = "rantau" class = "form-control"> <opsyen nilai = ""> Sila pilih kawasan @Foreach (kumpulkan ($ butiran)-> unik ('rantau') sebagai detail $) <option value = "{{$ detail ['region']}}"> {{$ detail ['region']}} @endforeach <label for = "Town" class = "MT-3"> Perbandaran: <pilih name = "Town" id = "Town" class = "Form-control" Disabled> <opsyen nilai = ""> Sila pilih perbandaran <label for = "quarter" class = "mt-3"> blok: <pilih name = "quarter" id = "quarter" class = "form-control" dilumpuhkan> <opsyen nilai = ""> Sila pilih blok <label untuk = "postal_code" class = "mt-3"> kod zip: <input type = "text" name = "postal_code" id = "postal_code" class = "form-control" ReadOnly> </script>
3.2 Menulis Logik JavaScript
Sekarang kami akan menambah kod JavaScript untuk mendengar perubahan dalam pemilihan kawasan dan mengemas kini menu drop-down perbandaran dan blok secara dinamik.
<script> // pastikan dokumen.addeventListener ('domContentLoaded', function () { const regionselect = document.getElementById ('rantau'); const townSelect = document.getElementById ('Town'); const quarterselect = document.getElementById ('Quarter'); const PostalCodeInput = document.getElementById ('postal_code'); / TownSelect.innerHtml = '<option value = ""> Sila pilih Perbandaran '; TownSelect.disabled = true; quarterselect.innerHtml = '<option value = ""> Sila pilih blok '; quarterselect.disabled = true; postalCodeInput.Value = ''; // Kosongkan kod pos} RetettownAndquarter (); // melaksanakan regionselect.addeventListener ('perubahan', fungsi () { const selectedRegion = this.value; RetettownAndquarter (); // Reset jika (SelectedRegion) { // menapis data perbandaran yang sepadan dengan kawasan yang dipilih Const FilteredTowns = allDetails.filter (item => item ['rantau'] === SelectedRegion); // Dapatkan senarai bandar yang tidak ditiru const uniquetowns = [... set baru (filteredtowns.map (item => item ['town']))]; // Perhatikan bahawa 'bandar' mempunyai ruang // isi menu drop-down perbandaran uniquetowns.foreach (Town => { const option = document.createElement ('option'); option.value = Town; option.TextContent = Town; TownSelect.AppendChild (pilihan); }); townSelect.disabled = false; // Dayakan menu drop-down perbandaran} }); TownSelect.AdDeventListener ('perubahan', fungsi () { const selectedRegion = regionselect.value; const selectedTown = this.value; quarterselect.innerHtml = '<option value = ""> Sila pilih Blok '; // Reset blok quarterselect.disabled = true; postalCodeInput.Value = ''; // Kosongkan kod pos jika (SelectedRegion && SelectedTown) { / item ['rantau'] === SelectedRegion && item ['Town'] === SelectedTown ); // Dapatkan senarai blok bukan duplikasi const unikquarters = [... set baru (filteredquarters.map (item => item ['quarter']))]; // Perhatikan bahawa 'suku' mempunyai ruang // isi menu drop-down blok unikquarters.foreach (quarter => { const option = document.createElement ('option'); option.value = Quarter; option.TextContent = Quarter; QuartersElect.AppendChild (pilihan); }); quarterselect.disabled = false; // Dayakan menu drop-down blok} }); quarterselect.addeventListener ('perubahan', fungsi () { const selectedRegion = regionselect.value; const selectedTown = townSelect.Value; const selectedquarter = this.value; postalCodeInput.Value = ''; // Kosongkan kod pos jika (SelectedRegion && dipilih && dipilih) { // Cari kod pos yang sepadan dengan constedDetail = allDetails.find (item => item ['rantau'] === SelectedRegion && Item ['Town'] === SelectedTown && Item ['Quarter'] === SelectedQuarter ); jika (matchedDetail) { postalCodeInput.Value = MatchedDetail ['Poskode']; } } }); }); </script>
menggambarkan:
- @json ($ butiran): Ini adalah arahan yang mudah untuk Blade Laravel yang secara automatik menukarkan pembolehubah PHP ke JSON Strings dengan selamat dan mengodkan entiti HTML, yang boleh digunakan secara langsung dalam JavaScript.
- Document.AdDeventListener ('DomContentLoaded', ...): Pastikan kod JavaScript dilaksanakan selepas dokumen HTML dimuatkan sepenuhnya dan dihuraikan.
- penapis () dan peta (): Kaedah umum untuk tatasusunan JavaScript, digunakan untuk menapis dan mengubah data.
- [... set baru (...)]: Sintaks JavaScript ringkas untuk mengekstrak unsur -unsur unik dari array.
- Hartanah Dilumpuhkan: Lumpuhkan menu drop-down berikutnya sebelum pengguna membuat pilihan yang sah.
- Perhatikan Nama Utama: Terdapat ruang di hujung bandar dan nama utama suku dalam data JSON anda. Pastikan untuk menyimpan ruang ini apabila mengakses JavaScript, contohnya item ['Town']. Dalam pembangunan sebenar, adalah disyorkan untuk memastikan nama -nama utama diseragamkan dan mengelakkan ruang.
3.3 Pertimbangan set data yang besar
Jika fail JSON anda sangat besar, memuatkan semua data ke hujung depan sekaligus boleh menyebabkan masalah prestasi. Dalam kes ini, pendekatan yang lebih baik ialah:
- Memuatkan awal: Hanya memuatkan data dari menu drop-down pertama (seperti "kawasan") apabila halaman dimuatkan.
- Permintaan AJAX: Apabila pengguna memilih rantau, permintaan AJAX dihantar ke backend melalui JavaScript (contohnya, menggunakan API atau AXIOS), mengambil rantau yang dipilih sebagai parameter.
- Penapisan Backend: Selepas pengawal backend menerima permintaan itu, ia menapis data perbandaran yang sepadan dari fail JSON mengikut parameter dan mengembalikannya dalam format JSON.
- Kemas kini Front-End: Selepas JavaScript menerima data yang dikembalikan oleh back-end, secara dinamik mengisi menu drop-down perbandaran.
- Ulang: Ulangi proses ini untuk blok berikutnya, dan lain-lain menu drop-down.
Kaedah ini dapat mengurangkan jumlah data yang dimuatkan pada halaman awal dan meningkatkan pengalaman pengguna.
Meringkaskan
Melalui langkah -langkah di atas, anda telah belajar bagaimana untuk memuatkan dan menghuraikan fail JSON tempatan dalam aplikasi Laravel anda dan memaparkan data mereka secara dinamik dalam templat bilah anda. Sama ada ia adalah menu drop-down yang mudah atau pemilih cascading yang kompleks, digabungkan dengan kuasa pemprosesan back-end Laravel dan interaktiviti JavaScript front-end, anda boleh membina bentuk yang kuat dan mesra pengguna. Dalam projek sebenar, pastikan anda mempertimbangkan saiz data dan pilih strategi pemuatan dan interaksi yang paling sesuai.
Atas ialah kandungan terperinci Menggunakan data JSON dengan cekap untuk melaksanakan menu drop-down cascading dalam templat bilah laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Melalui kontrak pintar yang lengkap, mesin maya EVM dan mekanisme gas, Ethereum telah membina platform blockchain yang boleh diprogramkan di luar Bitcoin, menyokong ekosistem aplikasi yang pelbagai seperti DEFI dan NFT; Kelebihan terasnya termasuk ekosistem Dapp yang kaya, pengaturcaraan yang kuat, komuniti pemaju aktif dan interoperabilitas rantaian rentas; Ia sedang melaksanakan transformasi konsensus dari POW ke POS melalui peningkatan Ethereum 2.0, memperkenalkan rantaian suar, mekanisme pengesahan dan sistem hukuman untuk meningkatkan kecekapan tenaga, keselamatan dan desentralisasi; Pada masa akan datang, ia akan bergantung kepada teknologi sharding untuk merealisasikan pemprosesan data dan pemprosesan selari, sangat meningkatkan daya tampung; Pada masa yang sama, teknologi rollup telah digunakan secara meluas sebagai penyelesaian Layer 2, rollup optimis dan zk-rollu

Apakah mata wang memefi dalam direktori? Memefi Gameplay PENGENALAN Memefi (Memefi) Ramalan Harga Memefi (Memefi) Ramalan Harga: EMA Cluster dan Bollinger Band Extrusion Breakthrough Memefi (Memefi) Ramalan Harga: RSI dan Arah Trend Trend Memefi (Memefi) Ramalan harga 2027 Memefi (Memefi) dari 2028 Memefi (Memefi) 2

Jadual Kandungan: Diskaun Exchange Ogos Binance (Binance): Diskaun Pertukaran Bybit Ogos: August MEXC Matcha Exchange Discounts: Ogos Bitfinex (Green Leaf) Diskaun Pertukaran: Cryptocurrency Exchange Ranking Artikel ini akan menyusun tawaran terkini dari pertukaran cryptocurrency utama pada bulan Ogos 2025, dan satu artikel membolehkan pembaca untuk menikmati manfaat terbaik. Apa yang baru-baru ini dalam bulatan mata wang tidak tahu ialah kebanyakan pertukaran mempunyai tawaran aplikasi tersembunyi, termasuk: pengurangan bayaran (pengurangan 10-20%) bonus akaun baru (boleh berfungsi sebagai margin, penggunaan

Jadual Kandungan Pasaran berada dalam "keadaan keseimbangan relatif" untuk selebihnya 2025 Bitcoin Outlook adalah positif walaupun harga bitcoin telah jatuh dari paras tertinggi sepanjang masa, Glassnode menunjukkan bahawa pasaran semasa telah memasuki "kedudukan keseimbangan relatif". Menurut analisis oleh platform data rantaian kaca, harga bitcoin secara beransur-ansur melantun selepas rendah tempatan $ 112,000, tekanan jualan pemegang jangka pendek (STH) dalam keadaan yang menguntungkan semakin lemah. Dalam laporan pasaran yang dikeluarkan pada hari Rabu, Glassnode mengatakan bahawa pemegang jangka pendek (merujuk kepada pelabur yang telah memegang mata wang selama kurang dari 155 hari) telah "disejukkan" dengan ketara. Data menunjukkan bahawa "margin keuntungan output perbelanjaan" (SOPR) mengukur nisbah jualan pelabur beli dan yang menguntungkan baru -baru ini telah menurun

Blockchain adalah teknologi lejar digital yang diedarkan dan terdesentralisasi. Prinsip terasnya termasuk: 1 Lejar yang diedarkan memastikan data disimpan serentak pada semua nod; 2. Teknologi penyulitan, menghubungkan blok melalui nilai hash untuk memastikan data tidak diganggu; 3. Mekanisme konsensus, seperti POW atau POS, memastikan urus niaga dipersetujui antara nod; 4. Desentralisasi, menghapuskan satu titik kawalan, meningkatkan rintangan penapisan; 5. Kontrak pintar, protokol untuk pelaksanaan automatik. Cryptocurrency adalah aset digital yang dikeluarkan berdasarkan blockchain. Proses operasi adalah: 1. Pengguna memulakan urus niaga dan tanda secara digital; 2. Urus niaga disiarkan ke rangkaian; 3. Pelombong atau pengesahan mengesahkan kesahihan transaksi; 4. Pelbagai urus niaga dibungkus ke dalam blok baru; 5. Sahkan zon baru melalui mekanisme konsensus

Dalam bidang mata wang digital, pelbagai pembolehubah dan peluang penuh, meningkatkan prinsipal 5,000 hingga 500,000 bermakna seratus kali penghargaan aset perlu dicapai. Ini bukan permainan matematik yang mudah, tetapi ujian komprehensif yang melibatkan kognisi, strategi, mentaliti dan pelaksanaan. Ia memerlukan peserta untuk tidak bergantung semata -mata kepada nasib, tetapi juga mempunyai wawasan pasaran yang berminat dan keupayaan pengurusan risiko yang luar biasa.

Ya, SOL mungkin meletup lagi pada tahun 2025. 1) Peningkatan teknologi seperti pelancaran firedancer, yang dijangka meningkatkan TPS hingga satu juta tahap; 2) naratif baru Depin dan AI menggalakkan pembangunan ekologi; 3) data rantaian terus pulih, TVL melebihi AS $ 2 bilion; 4) dana institusi pulangan digabungkan dengan jangkaan ETF; 5) Jika asas dan sentimen pasaran bekerjasama, harga dijangka mencecah AS $ 250, tetapi anda perlu berhati -hati dengan sejarah downtime, persaingan yang semakin meningkat dan risiko tekanan jualan token. Pelabur harus membina kedudukan dalam kelompok dan menggabungkan strategi pelarasan dinamik data secara rantaian. Wabak akhir bergantung kepada kesan sinergistik pelaksanaan teknologi, aktiviti ekologi dan resonans modal.

Bitcoin (BTC) adalah aset digital yang dicipta dan dijalankan berdasarkan prinsip kriptografi. Ia tidak bergantung kepada institusi pusat tertentu, seperti bank atau kerajaan, untuk mengeluarkan dan mengurus. Konsepnya pertama kali dicadangkan pada tahun 2008 oleh individu atau kumpulan bernama "Satoshi Nakamoto" dalam kertas bertajuk "Bitcoin: Sistem Tunai Elektronik Peer-to-Peer."
