Lihat pola lapisan di mana Anda hanya menyajikan apa yang telah diberikan kepada Anda baik-baik saja, tetapi bagaimana Anda tahu apa yang tersedia? Apakah ada fungsi "daftar semua variabel yang ditentukan" di TWIG? Apakah ada cara untuk membuang variabel?
Solusi yang saya temukan dengan mencarinya adalah dengan mendefinisikan fungsi di mana saya dapat menggunakan alat debug debug yang ada dengan menyuntikkan fungsi , tetapi semua referensi yang saya temukan mencakup dua baris kode yang bagus ini, tetapi tidak ada tempat untuk menentukan di mana harus tempatkan mereka. Pergi oleh fakta bahwa mereka membutuhkan variabel $ loader didefinisikan, saya mencoba /app/config/autoload.php tetapi $ loader di sana adalah jenis yang salah. Di mana saya menempatkan kode php untuk menambahkan fungsi ranting?
{{ dump() }}
untuk membuang semua variabel, itu mengembalikan halaman kosong. Apakah ada cara lain untuk membuang variabel?dump
, jelasdump
itu bukan masalahnya. Saya akan menyarankan memposting pertanyaan baru jika Anda tidak dapat menemukannya sebaliknya.Anda dapat menggunakan
debug
tag, yang didokumentasikan di sini .Sunting: Pada Twig 1.5, ini telah usang dan diganti dengan
dump
fungsi baru (catatan, sekarang fungsi dan tidak lagi tag). Lihat juga: Jawaban yang diterima di atas.sumber
Unknown tag name "debug"
, perpanjang konfigurasi Anda (baik di globalconfig.yml
atauconfig_dev.yml
) seperti dijelaskan di sini: github.com/symfony/symfony-docs/issues/455#issuecomment-1884861Jadi saya membuatnya bekerja, sebagian agak retas:
twig: debug: 1
inapp/config/config.yml
Tambahkan ini ke config_dev.yml
sudo rm -fr app/cache/dev
print_r()
, saya bukavendor/twig-extensions/lib/Twig/Extensions/Node/Debug.php
dan ubahprint_r(
ked(
PS. Saya masih ingin tahu bagaimana / di mana mengambil lingkungan $ ranting untuk menambahkan filter dan ekstensi.
sumber
twig: debug: 1
karena mewarisi informasi ini dari lingkungan pengontrol depan Anda. Kalau tidak, Anda bisa berakhir dengan tidak sengaja mengeluarkan informasi debug di lingkungan prod Anda. Selama Anda bekerja di lingkungan dev, ia diaktifkan secara default dan dinonaktifkan di lingkungan prod Anda.Jika Anda menggunakan Ranting dalam aplikasi Anda sebagai komponen, Anda dapat melakukan ini:
Kemudian di templat Anda:
sumber
$twig = new Twig_Environment($loader, array(...
?Jika Anda menggunakan Ranting sebagai komponen mandiri berikut ini beberapa contoh cara mengaktifkan debugging karena tidak mungkin fungsi dump (variabel) akan bekerja langsung di luar kotak
Standalone
Ini ditemukan pada tautan yang disediakan oleh icode4food
Silex
sumber
Buang semua variabel khusus:
Anda dapat menggunakan plugin saya yang akan melakukannya untuk Anda (dan akan memformat output dengan baik):
Ranting Dump Bar
sumber
{{ dump() }}
tidak bekerja untuk saya.PHP
tersedak. Tingkat sarang terlalu dalam kurasa.Yang Anda perlukan untuk
debug
ranting template jika Anda menggunakandebugger
ekstensi adalah seperti ini .Maka itu hanya masalah menetapkan breakpoint dan menelepon ke
{{ inspect() }}
mana pun Anda membutuhkannya. Anda mendapatkan info yang sama dengan{{ dump() }}
tetapi di debugger Anda.sumber
Karena Symfony> = 2.6, ada komponen VarDumper yang bagus , tetapi tidak digunakan oleh
dump()
fungsi Twig .Untuk menimpanya, kita dapat membuat ekstensi:
Dalam implementasi berikut, jangan lupa mengganti ruang nama.
Fuz/AppBundle/Resources/config/services.yml
Fuz/AppBundle/Twig/Extension/DebugExtension.php
sumber
Resep lengkap di sini untuk referensi yang lebih cepat (perhatikan bahwa semua langkah adalah wajib):
1) saat membuat ranting, lewati opsi debug
2) tambahkan ekstensi debug
3) Gunakan seperti yang ditunjukkan @Hazarapet Tunanyan
atau
atau
sumber
Untuk men - debug templat Ranting Anda dapat menggunakan pernyataan debug .
Di sana Anda dapat mengatur pengaturan debug secara eksplisit.
sumber
Unknown tag name "debug"
kesalahan.Anda bisa mengedit
dan ubah
the var_dump()
fungsi menjadi\Doctrine\Common\Util\Debug::dump()
sumber
Karena kebanyakan programmer PHP yang baik suka menggunakan XDebug untuk benar-benar melangkah melalui menjalankan kode dan menonton variabel berubah secara real-time, menggunakan
dump()
terasa seperti langkah kembali ke masa lalu yang buruk.Itu sebabnya saya membuat ekstensi Twig Debug dan menaruhnya di Github.
https://github.com/delboy1978uk/twig-debug
composer require delboy1978uk/twig-debug
Kemudian tambahkan ekstensi. Jika Anda tidak menggunakan Symfony, seperti ini:
Jika ya, seperti ini di layanan Anda konfigurasi YAML:
Setelah terdaftar, Anda sekarang dapat melakukan ini di mana saja di templat ranting:
Sekarang, Anda dapat menggunakan XDebug, eksekusi akan berhenti sementara, dan Anda dapat melihat semua properti dari Konteks dan Lingkungan.
Selamat bersenang-senang! :-D
sumber
Anda dapat menggunakan fungsi dump dan mencetaknya seperti ini
tetapi ada satu hal yang menyenangkan juga, jika Anda tidak menetapkan argumen untuk fungsi dump, itu akan mencetak semua variabel yang tersedia , seperti
sumber
Jika Anda berada di lingkungan di mana Anda tidak dapat menggunakan
dump
fungsi tersebut (mis: opencart), Anda dapat mencoba:sumber