Saya telah menambahkan pengaturan ke file config.yml saya seperti:
app.config:
contact_email: somebody@gmail.com
...
Untuk kehidupan saya, saya tidak tahu bagaimana membacanya menjadi variabel. Saya mencoba sesuatu seperti ini di salah satu pengendali saya:
$recipient =
$this->container->getParameter('contact_email');
Tapi saya mendapat pesan kesalahan:
Parameter "contact_email" harus ditentukan.
Saya telah membersihkan cache saya, saya juga mencari di mana-mana di dokumentasi situs Symfony2 yang dimuat kembali, tetapi saya tidak dapat menemukan cara untuk melakukan ini.
Mungkin terlalu lelah untuk memikirkan ini sekarang. Adakah yang bisa membantu dengan ini?
symfony
configuration
josef.van.niekerk
sumber
sumber
swiftmailer: delivery_address: [email protected]
Anda dapat menemukan informasi lebih lanjut di buku masak Symfony2%parameter_name%
- notation (dalam YAML)Meskipun solusi memindahkan
contact_email
keparameters.yml
mudah, seperti yang diusulkan dalam jawaban lain, itu dapat dengan mudah mengacaukan file parameter Anda jika Anda berurusan dengan banyak bundel atau jika Anda berurusan dengan blok konfigurasi yang bersarang.PENDEKATAN PERTAMA: Blok konfigurasi terpisah, menjadikannya sebagai parameter
Dengan ekstensi ( lebih lanjut tentang ekstensi di sini ) Anda dapat menjaga ini dengan mudah "dipisahkan" ke dalam blok yang berbeda di
config.yml
dan kemudian menyuntikkan itu sebagai parameter gettable dari controller.Di dalam kelas Ekstensi Anda di dalam
DependencyInjection
direktori tulis ini:Kemudian di config.yml Anda, config_dev.yml dan Anda dapat mengaturnya
Untuk dapat memprosesnya
config.yml
di dalam Anda,MyNiceBundleExtension
Anda juga memerlukanConfiguration
kelas di namespace yang sama:Kemudian Anda bisa mendapatkan konfigurasi dari controller Anda, seperti yang Anda inginkan dalam pertanyaan awal Anda, tetapi tetap
parameters.yml
bersihkan, dan aturconfig.yml
di bagian yang terpisah:PENDEKATAN KEDUA: Blok konfigurasi terpisah, menyuntikkan konfigurasi ke layanan
Untuk pembaca yang mencari sesuatu yang serupa tetapi untuk mendapatkan konfigurasi dari layanan, bahkan ada cara yang lebih baik yang tidak pernah mengacaukan ruang bersama "paramaters" dan bahkan tidak perlu
container
dilewatkan ke layanan (melewati seluruh wadah adalah praktik untuk menghindari).Trik di atas masih "menyuntikkan" ke dalam ruang parameter konfigurasi Anda.
Namun demikian, setelah memuat definisi Anda tentang layanan, Anda dapat menambahkan pemanggilan metode seperti misalnya
setConfig()
yang menyuntikkan blok itu hanya ke layanan.Misalnya, di kelas Ekstensi:
Kemudian di Anda,
services.yml
Anda mendefinisikan layanan Anda seperti biasa, tanpa perubahan mutlak:Dan kemudian di
SillyManager
kelas Anda , cukup tambahkan metode:Perhatikan bahwa ini juga berfungsi untuk array alih-alih nilai skalar! Bayangkan Anda mengkonfigurasi antrian kelinci dan memerlukan host, pengguna, dan kata sandi:
Tentu saja Anda perlu mengubah Pohon Anda, tetapi kemudian Anda dapat melakukan:
dan kemudian di layanan lakukan:
Semoga ini membantu!
sumber
MyNiceProjectExtension->load()
metode dengan baris ini:$container->setParameter( 'my_nice_project.contact_email', $processedConfig[ 'contact_email' ]);
. Terima kasih Xavi!Saya harus menambahkan jawaban douglas, Anda dapat mengakses konfigurasi global, tetapi symfony menerjemahkan beberapa parameter, misalnya:
adalah
Anda dapat menggunakan var_dump untuk mencari kunci atau nilai yang ditentukan.
sumber
Untuk dapat mengekspos beberapa parameter konfigurasi untuk bundel Anda, Anda harus membaca dokumentasi untuk melakukannya. Ini cukup mudah dilakukan :)
Inilah tautannya: Cara mengekspos Konfigurasi Semantik untuk Bundel
sumber
Seperti yang dikatakan sebelumnya - Anda dapat mengakses parameter apa pun dengan menggunakan wadah injeksi dan menggunakan properti parameternya.
"Symfony - Bekerja dengan Definisi Layanan Kontainer" adalah artikel yang bagus tentang itu.
sumber
Saya belajar cara mudah dari contoh kode http://tutorial.symblog.co.uk/
1) perhatikan ZendeskBlueFormBundle dan lokasi file
2) perhatikan Zendesk_BlueForm.emails.contact_email dan lokasi file
3) perhatikan bagaimana saya mendapatkannya di $ client dan lokasi file controller
sumber