Zend Framework Modul berdasarkan tatacara Per-

Dengan Watkin Lloyd Steven , Jumaat 1 Januari 2010 22:40

Saya telah membuat tindak lanjut untuk posting ini yang memerlukan konfigurasi kurang, sila lihat Modul Berbasis Layout - Zend Framework .

Apabila menggunakan Zend Framework dengan modul, jelas bahawa jika anda menjalankan pelbagai (sub-) halaman dari aplikasi yang sama anda tidak perlu menginginkan hal yang sama script tata letak untuk setiap bahagian. Saya memutuskan untuk pergi dengan struktur laman berikut:

  / Aplikasi
     / Controllers
         ...
     / Model
     / Modul
         / Default
             / Controllers
             / Layout
                 / Script
             / Views
                 / Script
         / AnotherModule
             ...
     / Script

Masalahnya adalah menyiapkan script tata letak pada pangkalan pada-modul. Jawapannya datang melalui menggunakan Penolong Aksi. Menyiapkan layout pada pangkalan pada-modul melibatkan tiga langkah:

  1. Application.ini (atau setup tatarajah 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 / sekutu / layouts / skrip" 
  2. Buat anda Tindakan Helper:
      <? Php
     / **
      * Menetapkan pusat tata letak pada pangkalan pada-modul
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Sejak 2010/01/01
      * /
     kelas Pro_Controller_Action_Helper_SetLayoutPath
         meluas Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Menetapkan pusat layout berdasarkan modul
          * /
         fungsi awam 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);
    	         }
        	 }
         }
     } 
  3. Dan terakhir kaedah bootrap ini helper tindakan:
      ...
         / **
          * 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 ());
    	 }
     ... 

4 Responses to "Zend tatacara Per-Modul Framework berasaskan"

  1. Behrang berkata:

    Hi terima kasih pertama untuk anda membantu tutorial tapi katakan padaku di mana saya membuat pembantu tindakan dengan nama fail penyihir?
    behrang

  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

  3. Kanth Shashi berkata:

    Hi, iam bingung dengan tatacara tetapan modul database tertentu ... apakah ada yang punya ide?

  4. Saya fikir ini dengan mudah dapat dicapai usign pola di atas. Pertama, membuat pilihan dalam fail ini anda sepanjang fail:

    moduleName.db.user = "
    moduleName.db.password = "
    moduleName2.db.user = "
    ... Etc ...

    Maka cukup menghasilkan Sambungan database anda sesuai keinginan anda (Zend_Db:: kilang () atau semacam itu) dan menyimpan saja dalam registri atau menetapkannya sebagai penyesuai default jika menggunakan Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Tinggalkan Balasan













Panorama Tema oleh Themocracy

6 tetamu online sekarang
4 tetamu, 2 bots, 0 ahli
Max pengunjung hari ini: 15 jam 08:24 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