Zend Framework Modul berdasarkan pengaturan Per-
Saya telah membuat tindak lanjut untuk posting ini yang memerlukan konfigurasi kurang, silakan lihat Modul Berbasis Layout - Zend Framework .
Bila menggunakan Zend Framework dengan modul, jelas bahwa jika Anda menjalankan berbagai (sub-) situs dari aplikasi yang sama Anda tidak harus menginginkan hal yang sama script tata letak untuk setiap bagian. Saya memutuskan untuk pergi dengan struktur situs berikut:
/ Aplikasi / Controllers ... / Model / Modul / Default / Controllers / Layout / Script / Views / Script / AnotherModule ... / Script
Masalahnya adalah menyiapkan script tata letak pada basis per-modul. Jawabannya datang melalui menggunakan Penolong Aksi. Menyiapkan layout pada basis per-modul melibatkan tiga langkah:
- Application.ini (atau setup konfigurasi serupa):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / skrip" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / skrip" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouts / skrip" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / afiliasi / layouts / skrip"
- Buat Anda Tindakan Helper:
<? Php / ** * Mengatur jalur tata letak pada basis per-modul * * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Sejak 2010/01/01 * / kelas Pro_Controller_Action_Helper_SetLayoutPath meluas Zend_Controller_Action_Helper_Abstract { / ** * Mengatur jalur layout berdasarkan modul * / fungsi publik preDispatch () { $ Modul getRequest = $ this-> () -> getModuleName (); if ($ bootstrap = getActionController $ this-> () -> GetInvokeArg ('bootstrap')) { $ Config = $ getOptions bootstrap-> (); if (isset ($ config ['layoutPath'] ['layout'] [$ modul] ['sumber'])) { $ LayoutPath = $ Config [$ modul] ['layoutPath'] ['layout'] ['sumber']; $ This-> getActionController () -> GetHelper ('layout') -> SetLayoutPath ($ layoutPath); } } } }
- Dan terakhir metode bootrap ini helper tindakan:
... / ** * Mengatur tata letak script pada basis per-modul * / fungsi dilindungi _initLayoutHelper () { $ This-> bootstrap ('frontController'); $ Layout = Zend_Controller_Action_HelperBroker:: addHelper ( baru Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Hi terima kasih pertama untuk Anda membantu tutorial tapi katakan padaku di mana saya membuat pembantu tindakan dengan nama file penyihir?
behrang
Hi Behrang, menciptakan penolong tindakan dengan mana nama yang Anda suka, aku punya sendiri 'perpustakaan' dengan namespace 'Pro'. Anda bisa dengan mudah menyebut 'SetLayoutPath' kelas dan meletakkannya di tempat yang pernah Anda suka, asalkan kode dapat menemukannya dan Anda memperpanjang kelas wajib
Hi, iam bingung dengan pengaturan pengaturan modul database tertentu ... apakah ada yang punya ide?
Saya pikir ini dengan mudah dapat dicapai usign pola di atas. Pertama, membuat pilihan dalam file ini anda sepanjang file:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Maka cukup menghasilkan koneksi database Anda sesuai keinginan Anda (Zend_Db:: pabrik () atau semacam itu) dan menyimpan saja dalam registri atau mengaturnya sebagai adaptor default jika menggunakan Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).