Oke - Saya tahu ini masalah yang sangat mendasar, tapi saya tidak bisa memahaminya. Ini pertanyaan tentang Laravel.
Pada dasarnya, saya memiliki lembar gaya yang disematkan dalam tampilan tata letak default saya. Saat ini saya hanya menggunakan css biasa untuk menautkannya, seperti:
<link rel="stylesheet" href="css/app.css" />
Ini berfungsi dengan baik saat saya berada di rute tingkat tunggal seperti / tentang , tetapi berhenti berfungsi saat saya masuk lebih dalam, seperti / tentang / saya .
Jika saya melihat konsol pengembang Chrome, saya melihat beberapa kesalahan berikut (hanya untuk rute yang lebih dalam):
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://example.dev/about/css/app.css".
Jadi jelas sekarang mencari css di dalam folder "tentang" - yang tentu saja bukan folder sama sekali.
Saya hanya ingin melihat aset di tempat yang sama terlepas dari rutenya.
asset()
metode pembantu instanURL::asset()
. Itu melakukan pekerjaan yang sama.Laravel 4
Cara yang lebih baik dan benar untuk melakukan ini
Menambahkan CSS
HTML :: style akan ditautkan ke folder proyek / publik / Anda
Menambahkan JS
HTML :: script akan ditautkan ke folder proyek / publik / Anda
sumber
Anda menggunakan jalur relatif untuk aset Anda, ubah ke jalur absolut dan semuanya akan berfungsi (tambahkan garis miring sebelum "css".
sumber
di Laravel 5 ,
ada 2 cara untuk memuat file js di tampilan Anda
pertama adalah menggunakan helper html, kedua menggunakan pembantu aset.
untuk menggunakan html helper Anda harus menginstal paket ini terlebih dahulu melalui commandline:
maka Anda perlu mendaftarkannya kembali, jadi buka config / app.php, dan tambahkan baris ini ke array penyedia
maka Anda harus mendefinisikan alias untuk paket html Anda, jadi buka aliases array di config / app.php dan tambahkan ini
sekarang helper html Anda diinstal sehingga di file tampilan blade Anda, Anda dapat menulis ini:
ini akan mencari file test.js Anda di project_root / public / js / test.js.
//////////////////////////////////////////////// ////////////
untuk menggunakan asset helper sebagai ganti html helper, Anda harus menulis sth seperti ini di file view Anda:
ini akan mencari file test.js di project_root / resources / assets / test.js
sumber
<script src="{{ url(asset('test.js')) }}"></script>
(atau<script src="{{ url(mix('test.js')) }}"></script>
jika Anda menggunakan Laravel Mix).Jika Anda menggunakan Laravel 3 dan file CSS / JS Anda di dalam folder publik seperti ini
lalu Anda dapat memanggil mereka menggunakan template Blade seperti ini
sumber
saya sarankan Anda meletakkannya di filter rute sebelum di {project} /application/routes.php
dan menggunakan mesin template blade
atau lebih lanjut tentang dokumen pengelolaan aset tingkat
sumber
di
laravel 4
Anda hanya perlu menempelkan{{ URL::asset('/') }}
cara ini:Itu sama untuk:
sumber
Laravel 5.4 dengan mix helper:
sumber
Di Laravel 5.7, masukkan file CSS atau JS Anda ke direktori Publik.
Untuk CSS:
Untuk JS:
sumber
Cara terbaik menurut saya adalah menambahkan tag BASE di HTML Anda
Jadi tidak perlu menggunakan hal-hal seperti
ketik saja
dalam pandangan Anda dan itu akan berhasil.
Metode ini akan menangani URL RESTful dan sumber daya statis sebagai gambar, css, skrip.
sumber
Vinsa hampir benar, Anda harus menambahkan
dan skrip harus berada di jalur regulernya
alasan untuk ini adalah karena Gambar dan hal-hal lain dengan jalur relatif seperti sumber gambar atau permintaan ajax tidak akan berfungsi dengan benar tanpa jalur dasar terpasang.
sumber
Jika Anda melakukan kode keras, Anda mungkin harus menggunakan jalur lengkap (
href="http://example.com/public/css/app.css"
). Namun, ini berarti Anda harus menyesuaikan URL secara manual untuk pengembangan dan produksi.Alternatif solusi di atas akan digunakan
<link rel="stylesheet" href="URL::to_asset('css/app.css')" />
di Laravel 3 atau<link rel="stylesheet" href="URL::asset('css/app.css')" />
di Laravel 4. Ini akan memungkinkan Anda untuk menulis HTML seperti yang Anda inginkan, tetapi juga membiarkan Laravel menghasilkan jalur yang tepat untuk Anda di lingkungan mana pun.sumber
Cara yang lebih baik untuk menggunakan seperti,
sumber
Misalkan Anda belum mengganti nama folder publik Anda. File css dan js Anda ada di subfolder css dan js di folder publik. Sekarang tajuk Anda akan menjadi:
sumber
Tambahkan Masalah Lain:
Jika Anda ingin menghapus
/public
dari proyek Anda menggunakan.htaccess
,maka Anda dapat menggunakan ini, [Tambahkan
public
sebelum/css
di dalamasset()
][Terkadang, itu berguna.]
sumber
Untuk Laravel 4: {!! untuk penjepit keriting ganda {{
dan untuk Laravel 5 & versi di atasnya: Anda dapat mengganti {!! oleh {{and !!} by}} dalam versi yang lebih canggih
Jika Anda telah menempatkan JavaScript di direktori yang ditentukan khusus.
Misalnya, jika Anda
jQuery-2.2.0.min.js
ditempatkan di bawah direktoriresources/views/admin/plugins/js/
maka dari itu*.blade.php
Anda akan dapat menambahkan di akhir bagian sebagaiKarena versi High-End mendukung versi Lower-End juga dan tetapi tidak sebaliknya
sumber
Cara yang lebih baik dan benar untuk melakukan ini:
sumber
Di Laravel 5.8
baru saja membuat trik untuk saya.
sumber
letakkan file skrip Anda di direktori publik lalu gunakan (misalnya untuk userFunctions.js)
sumber