Sebagai susulan kepada post saya sebelum ini pada tetapan modul setiap susun atur berasaskan Rangka Kerja Zend , saya telah dikemaskini kod memerlukan konfigurasi yang kurang kemudian sebelum (bukan bahawa ia memerlukan lebih bahawa beberapa baris dalam konfigurasi permohonan anda!).
Terus 'Rangka Kerja Zend Per Tetapan Layout Modul - Follow Up' bacaan »
Artikel , Pengkomputeran , PHP , Web Programming , Zend Rangka Kerja |
tindakan , pengawal , rangka kerja , penolong , susun atur , modul , PHP , zend , Rangka Kerja Zend
Saya telah membuat susulan untuk jawatan ini yang memerlukan kurang konfigurasi, sila lihat Modul Berasaskan Layout - Rangka Kerja Zend .
Apabila menggunakan rangka kerja zend dengan modul, jelas bahawa jika anda menjalankan pelbagai (sub-) laman web di luar permohonan yang sama anda tidak semestinya mahu yang sama skrip reka letak untuk setiap bahagian. Saya memutuskan untuk pergi dengan struktur laman web berikut:
/ Permohonan
/ Pengawal
...
/ Model
/ Modul
/ Default
/ Pengawal
/ Susun atur
/ Skrip
/ Pandangan
/ Skrip
/ AnotherModule
...
/ Skrip
Masalah itu telah menubuhkan skrip susun atur atas dasar per-modul. Jawapan yang diterima adalah melalui penggunaan Pembantu Tindakan. Menubuhkan susun atur atas dasar per-modul melibatkan tiga langkah:
- Application.ini (atau konfigurasi setup yang serupa):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modul / admin / susun atur / skrip"
default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / susun atur / skrip"
member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / ahli / susun atur / skrip"
affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modul / affiliate / susun atur / skrip"
- Buat Pembantu Tindakan anda:
<? Php
/ **
* Menetapkan laluan susun atur atas dasar per-modul
*
* @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Sejak 2010/01/01
* /
kelas Pro_Controller_Action_Helper_SetLayoutPath
memanjangkan Zend_Controller_Action_Helper_Abstract
{
/ **
* Set susun atur jalan berdasarkan modul
* /
awam fungsi preDispatch ()
{
$ Modul = $ this-> GetRequest () -> getModuleName ();
jika ($ bootstrap = $ this-> getActionController ()
-> GetInvokeArg ('bootstrap')) {
$ Config = $ bootstrap-> getOptions ();
jika (isset ($ config [$ modul] ['sumber'] ['layout'] ['layoutPath'])) {
$ LayoutPath =
[Modul $] $ config ['sumber'] ['layout'] ['layoutPath'];
$ This-> getActionController ()
-> GetHelper ('layout')
-> SetLayoutPath ($ layoutPath);
}
}
}
} - Dan akhir sekali boostrap penolong tindakan:
...
/ **
* Set skrip susun atur atas dasar per-modul
* /
dilindungi fungsi _initLayoutHelper ()
{
$ Ini-> bootstrap ('frontController');
$ Layout = Zend_Controller_Action_HelperBroker :: addHelper (
di baru Pro_Controller_Action_Helper_SetLayoutPath ());
}
...