Saya membaca dokumentasi Laravel Blade dan saya tidak tahu cara menetapkan variabel di dalam templat untuk digunakan nanti. Saya tidak dapat melakukannya {{ $old_section = "whatever" }}
karena itu akan menggemakan "apa pun" dan saya tidak menginginkan itu.
Saya mengerti bahwa saya bisa melakukannya <?php $old_section = "whatever"; ?>
, tetapi itu tidak elegan.
Apakah ada cara yang lebih baik dan elegan untuk melakukannya di templat Blade?
php
laravel
laravel-4
laravel-blade
dualitas_
sumber
sumber
<?php $old_section = "whatever"; ?>
. Saya merasa itu cukup mudah dibaca.Jawaban:
Tidak disarankan melakukan dalam tampilan sehingga tidak ada tag blade untuk itu. Jika Anda ingin melakukan ini dalam tampilan blade Anda, Anda bisa membuka tag php saat Anda menulisnya atau mendaftarkan tag blade baru. Contoh saja:
sumber
{?
daripada hanya menggunakan asli<?
?LARAVEL 5.5 DAN ATAS
Arahan blade @php tidak lagi menerima tag inline. Alih-alih, gunakan bentuk lengkap dari arahan:
LARAVEL 5.2 DAN ATAS
Anda bisa menggunakan:
Atau Anda dapat menggunakannya dalam pernyataan blokir:
LARAVEL 5
Perpanjang Blade seperti ini:
Kemudian lakukan salah satu dari yang berikut:
Solusi cepat: Jika Anda malas, cukup masukkan kode pada fungsi boot () dari AppServiceProvider.php.
Solusi yang lebih baik: Buat penyedia layanan sendiri. Lihat https://stackoverflow.com/a/28641054/2169147 tentang cara memperpanjang blade di Laravel 5. Ini sedikit lebih banyak bekerja dengan cara ini, tetapi latihan yang bagus tentang cara menggunakan Penyedia :)
LARAVEL 4
Anda bisa meletakkan kode di atas di bagian bawah app / start / global.php (atau tempat lain jika Anda merasa itu lebih baik).
Setelah perubahan di atas, Anda dapat menggunakan:
untuk menentukan suatu variabel.
sumber
@php(@i = 1)
atau menggunakannya dalam pernyataan blokir (dekat dengan@endphp
)Di laravel-4, Anda dapat menggunakan sintaks komentar templat untuk mendefinisikan / mengatur variabel.
Sintaks komentar adalah
{{-- anything here is comment --}}
dan diberikan olehPedang mesin sebagai<?php /* anything here is comment */ ?>
jadi dengan sedikit trik kita bisa menggunakannya untuk mendefinisikan variabel, misalnya
akan ditampilkan oleh Pedangsebagai
<?php /* */$i=0;/* */ ?>
yang menetapkan variabel bagi kita. Tanpa mengubah baris kode apa pun.sumber
<?php $i=0; ?>
Ada solusi sederhana yang tidak mengharuskan Anda untuk mengubah kode apa pun, dan itu berfungsi di Laravel 4 juga.
Anda cukup menggunakan operator penugasan (
=
) dalam ekspresi yang diteruskan ke@if
pernyataan, alih-alih (misalnya) operator seperti==
.Kemudian Anda bisa menggunakannya di mana saja Anda bisa menggunakan variabel lain
Satu-satunya downside adalah tugas Anda akan terlihat seperti kesalahan bagi seseorang yang tidak menyadari bahwa Anda melakukan ini sebagai solusi.
sumber
Ya akan membuatnya terlalu rumit.
Cukup gunakan php biasa
donesies.
(atau https://github.com/alexdover/blade-set juga terlihat cukup lurus)
Kita semua agak "meretas" sistem dengan mengatur variabel dalam tampilan, jadi mengapa membuat "retas" lebih rumit dari yang seharusnya?
Diuji dalam Laravel 4.
Manfaat lain adalah bahwa penyorotan sintaks berfungsi dengan baik (saya menggunakan hack komentar sebelumnya dan itu mengerikan untuk dibaca)
sumber
Anda Dapat Mengatur Variabel Di Mesin Templating Blade Cara-Cara berikut:
1.
Variabel Pengaturan Blok PHP Umum :
<?php $hello = "Hello World!"; ?>
Output:
{{$hello}}
2.
Variabel Pengaturan Blok PHP Blade :
@php $hello = "Hello World!"; @endphp
Output:
{{$hello}}
sumber
Sejak Laravel 5.2.23, Anda memiliki arahan @php Blade , yang dapat Anda gunakan inline atau sebagai pernyataan blok:
atau
sumber
Anda dapat mengatur variabel dalam file tampilan, tetapi itu akan dicetak seperti Anda mengaturnya. Lagi pula, ada solusinya. Anda dapat mengatur variabel di dalam bagian yang tidak digunakan. Contoh:
Kemudian
{{ $yourVar }}
akan mencetak diYour value
mana saja Anda inginkan, tetapi Anda tidak mendapatkan output ketika Anda menyimpan variabel.EDIT: penamaan bagian diperlukan jika tidak pengecualian akan dilempar.
sumber
Dalam Laravel 4:
Jika Anda ingin variabel dapat diakses di semua tampilan Anda, bukan hanya template Anda,
View::share
adalah metode yang hebat ( info lebih lanjut di blog ini ).Cukup tambahkan berikut ini di app / controllers / BaseController.php
dan sekarang
$myvar
akan tersedia untuk semua tampilan Anda - termasuk template Anda.Saya menggunakan ini untuk mengatur URL aset khusus lingkungan untuk gambar saya.
sumber
Dan tiba-tiba tidak ada yang muncul. Dari pengalaman saya, jika Anda harus melakukan sesuatu seperti ini, siapkan html dalam metode model atau lakukan pengorganisasian ulang kode Anda ke array atau sesuatu.
Tidak pernah hanya 1 cara.
sumber
$users = ...
, tetapi sesuatu di sepanjang garis$css_class = ...
, sehingga variabel desain yang bukan milik model atau controller, karena mereka ditentukan oleh desainer.Saya akan memperluas jawaban yang diberikan oleh @Pim.
Tambahkan ini ke metode boot AppServiceProvider Anda
Dengan cara ini Anda tidak mengekspos kemampuan untuk menulis ekspresi php apa pun.
Anda dapat menggunakan arahan ini seperti:
sumber
Dalam dokumen laravel https://laravel.com/docs/5.8/blade#php Anda dapat melakukan ini:
sumber
Dalam Laravel 5.1, 5.2 :
https://laravel.com/docs/5.2/views#sharing-data-with-all-views
Edit file:
/app/Providers/AppServiceProvider.php
sumber
Anda dapat menggunakan paket yang saya publikasikan: https://github.com/sineld/bladeset
Maka Anda dengan mudah mengatur variabel Anda:
sumber
Adapun cara elegan saya adalah seperti berikut
Dan gema saja
$old_section
variabel Anda .sumber
Jika Anda memiliki PHP 7.0:
Cara sederhana dan paling efektif adalah dengan penugasan di dalam tanda kurung .
Aturannya sederhana: Apakah Anda menggunakan variabel Anda lebih dari sekali? Kemudian nyatakan itu pertama kali digunakan dalam kurung, tetap tenang dan lanjutkan.
Dan ya, saya tahu
@forelse
, ini hanya demo.Karena variabel Anda sekarang dideklarasikan sebagai dan ketika digunakan, tidak perlu ada solusi blade apa pun.
sumber
Saya tidak berpikir Anda bisa - tetapi sekali lagi, jenis logika ini mungkin harus ditangani di controller Anda dan diteruskan ke tampilan yang sudah ditetapkan.
sumber
$previous_group_name
,,$separator_printed
dll.app/controllers/BaseController.php
.Tetapkan variabel ke templat blade, Inilah solusinya
Kita dapat menggunakan
<?php ?>
tag di halaman bladeATAU
Kita dapat menggunakan komentar blade dengan sintaks khusus
sumber
Komentar peretasan bukan cara yang sangat mudah dibaca untuk melakukannya. Juga editor akan mewarnainya sebagai komentar dan seseorang mungkin melewatkannya ketika melihat melalui kode.
Coba sesuatu seperti ini:
Ini akan dikompilasi menjadi:
... dan melakukan tugas dan tidak menggemakan apa pun.
sumber
Lebih baik berlatih mendefinisikan variabel di Controller dan kemudian meneruskan untuk melihat menggunakan
compact()
atau->with()
metode.Kalau tidak, #TLGreg memberikan jawaban terbaik.
sumber
Ada ekstensi yang sangat bagus untuk Blade radic / blade-extensions . Setelah Anda menambahkannya, Anda dapat menggunakan @set (variable_name, variable_value)
sumber
Saya mencari cara untuk menetapkan nilai ke kunci dan menggunakannya berkali-kali dalam pandangan saya. Untuk kasus ini, Anda dapat menggunakan
@section{"key", "value"}
di tempat pertama dan kemudian panggilan@yield{"key"}
untuk menampilkan nilai di tempat lain dalam pandangan Anda atau anaknya.sumber
Menurut pendapat saya akan lebih baik untuk menjaga logika di controller dan meneruskannya ke tampilan untuk digunakan. Ini dapat dilakukan salah satu dari dua cara menggunakan metode 'View :: make'. Saat ini saya menggunakan Laravel 3 tetapi saya cukup yakin bahwa itu adalah cara yang sama di Laravel 4.
atau
Metode 'with' dapat dilakukan dengan rantai. Anda kemudian akan menggunakan seperti di atas:
Informasi lebih lanjut di sini:
http://three.laravel.com/docs/views
http://codehappy.daylerees.com/using-controllers
sumber
$format='Y-m-d H:i:s';
dengan cara itu Anda bisa menggunakan kembali format itu dalam tampilan. Ini tentu bukan milik controller. Yang mengatakan, dalam menanggapi pertanyaan ... Tidak ada yang salah dengan<?php ?>
tag.Saya memiliki pertanyaan serupa dan menemukan apa yang saya pikir sebagai solusi yang tepat dengan View Composers
View Composers memungkinkan Anda untuk mengatur variabel setiap kali tampilan tertentu dipanggil, dan mereka bisa berupa tampilan spesifik, atau seluruh templat tampilan. Ngomong-ngomong, saya tahu itu bukan jawaban langsung untuk pertanyaan (dan 2 tahun terlambat) tetapi sepertinya solusi yang lebih anggun daripada mengatur variabel dalam tampilan dengan blade.
sumber
Laravel 5 Anda dapat dengan mudah melakukan ini. Lihat di bawah
sumber
Anda dapat memperluas bilah dengan menggunakan metode bentang seperti yang ditunjukkan di bawah ini ..
setelah itu inisialisasi variabel sebagai berikut.
sumber
berfungsi di semua versi blade.
sumber