Zend Framework Per Tetapan Layout Modul - Tindakan Lanjut

Dengan Watkin Lloyd Steven , Selasa 16 Februari 2010 08:48

Sebagai tindak lanjut posting saya sebelumnya tentang pada modul tatacara tata letak berdasarkan untuk Zend Framework , saya telah mengemas kini kod untuk memerlukan konfigurasi yang kurang maka sebelum (bukan yang memerlukan lebih bahawa beberapa baris dalam konfigurasi aplikasi anda!).

Sekali lagi kita membuat penggunaan Zend Controller Aksi Penolong menyerunya dari Bootstrap sebagai berikut:

     / **
      * Menetapkan tata letak script dalam pangkalan pada-modul
      * /
     fungsi dilindungi _initLayoutHelper ()
	 {
	     $ This-> Bootstrap ('frontController');
	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
	         baru Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
	 }

Hampir persis sama seperti sebelumnya, kecuali kali ini kita melewati APPLICATION_PATH tetap pada constructor sebagai pusat asas kami.

Selanjutnya penolong aksi kontroler sendiri sekarang dilihat sebagai berikut:

 / **
  * Menetapkan pusat tata letak pada pangkalan pada-modul
  *
  * @ Author Lloyd Watkin
  * @ Sejak 16/02/2010
  * @ Paket Pro
  * @ Sub-pakej Controller_Action_Helper
  * /

 / **
  * Menetapkan pusat tata letak pada pangkalan pada-modul
  *
  * @ Author Lloyd Watkin
  * @ Sejak 16/02/2010
  * @ Paket Pro
  * @ Sub-pakej Controller_Action_Helper
  * /
 kelas Pro_Controller_Action_Helper_SetLayoutPath
     meluas Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * Base path
	  *
	  * @ Var string
	  * /
	 $ _path Dilindungi;

	 / **
	  * Membangun
	  *
	  * @ Param string $ path
	  * /
	 fungsi awam __construct ($ path)
	 {
	     $ This-> setBasePath ($ path);
	 }

	 / **
	  * Menetapkan pusat asas
	  *
	  * @ Param string $ path
      * /
	 fungsi awam setBasePath ($ path)
	 {
		 if (is_string ($ path) |! | kosong ($ path)) {
			 melemparkan Pengecualian baru ('string Dikecualikan untuk path pangkalan');
		 }
		 $ This-> _path = $ path;
	 }

	 / **
	  * Dapatkan path pangkalan
	  *
	  * @ Return string
	  * /
	 fungsi dilindungi _getBasePath ()
	 {
		 if (is_null ($ this-> _path)) {
			 if (! pasti ('APPLICATION_PATH')) {
				 melemparkan Pengecualian baru ('Base pusat tidak dapat ditentukan');
			 }
			 $ This-> _path = APPLICATION_PATH;
		 }
		 kembali _path $ this->;
	 }

     / **
      * Menetapkan pusat layout berdasarkan modul
      * /
     fungsi awam preDispatch ()
     {
    	 $ Modul = preg_replace (
    	     '/ [^ AZ] / i','', $ this-> getRequest () -> getModuleName ()
    	 );

	     if ($ Bootstrap = getActionController $ this-> ()
	                        -> GetInvokeArg ('Bootstrap')) {

	         $ View $ Bootstrap-> = getResource ('view');
	         $ LayoutPath _getBasePath = $ this-> ().
	             "/ Modules / {$ modul} / layouts / scripts /";

	         / * Jika Direktori layout ada kemudian menerapkannya, jika tidak hanya jatuh
	          * Kembali default
	          * /
	         if (is_dir ($ layoutPath)) {
	             $ This-> getActionController ()
	                  -> GetHelper ('layout')
	                  -> SetLayoutPath ($ layoutPath);
	             $ View-> headLink () -> appendStylesheet (
	                 "/ Watak / {$ modul} / style.css"
	             );
	         }
    	 }
     }
 }

Nota berlalunya path pangkalan kita (bdk. APPLICATION_PATH) dalam constructor, kami juga mempunyai Getter dan setter untuk path basis. Berbeza dengan versi sebelumnya kod jika jalan layout tidak ada maka kod tersebut akan turun kembali pusat layout default. Jika path pangkalan tidak ditetapkan ini akan cuba untuk menentukan path pangkalan dari APPLICATION_PATH malar, dinyatakan pengecualian dilemparkan. Saya juga genit dilemparkan dalam style sheet modul berasaskan untuk mengukur baik

Tata letak berdasarkan modul ditentukan dari apakah jalan script layout ada (jelas kaedah ini dapat diubah dengan mudah). Hal ini menambah sedikit overhead dari setup application.ini (tetapi jika pusat tata letak ada PHP akan cache keputusan untuk * prestasi) tapi sebagai imbalannya anda mendapatkan kemudahan tambahan lebih mudah menjatuhkan dalam modul baru.

Itu saja, tidak jauh berbeza, tetapi anda tidak perlu menambah entri tatarajah baru setiap kali anda ingin menambah modul baru:)

* Untuk mengosongkan cache ini (jika diperlukan) menggunakan clearstatcache fungsi.

2 Responses to "Zend Framework Per Tetapan Layout Modul - Tindakan Lanjut"

  1. Behrang berkata:

    Hi, tolong beritahu saya di mana untuk membuat Pro_Controller_Action_Helper_SetLayoutPath kelas dengan nama fail yang
    Aku newbie di Zend.
    terima kasih

  2. Hi Behrang, mencipta penolong tindakan dengan mana nama yang anda suka, aku punya sendiri 'perpustakaan' dengan namespace 'Pro'. Anda boleh dengan mudah menyebut 'SetLayoutPath' kelas dan meletakkannya di tempat yang pernah anda suka, asalkan kod boleh menemuinya dan anda memanjangkan kelas wajib

Tinggalkan Balasan













Panorama Tema oleh Themocracy

9 tetamu online sekarang
7 tetamu, 2 bots, 0 ahli
Max pengunjung hari ini: 10 jam 01:05 UTC
Bulan ini: 26 jam 2011/07/05 00:35 UTC
Tahun ini: 130 pada 28-03-2011 10:40 UTC
Sepanjang masa: 130 pada 28-03-2011 10:40 UTC