Zend Framework Per-Module batay setting

By Steven Lloyd Watkin , Biyernes Enero 1, 2010 22:40

Ako ay gumawa nang isang followup sa post na ito na nangangailangan ng mas kaunting configuration, mangyaring tingnan ang Module Batay Layout - Zend Framework .

Kapag ginagamit ang mga Zend framework sa modules, ang kanyang halata na kung ikaw ay nagpapatakbo ng iba't-ibang (sub-) sites off ang parehong application ay hindi mo kinakailangan na gusto ang parehong mga script layout para sa bawat bahagi. Ako ay nagpasya na pumunta sa mga sumusunod na istraktura ng site:

  / Application
     / Controllers
         ...
     / Modelo
     / Modules
         / Default
             / Controllers
             / Layout
                 / Script
             / Views
                 / Script
         / AnotherModule
             ...
     / Script

Ang problema ay set up ang mga script layout sa isang per-module na batayan. Ang sagot ay dumating sa pamamagitan ng paggamit ng isang Action Helper. Pagse-set up ang mga layout sa isang per-module na batayan ay nagsasangkot ng tatlong hakbang:

  1. Application.ini (o katulad configuration setup):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / templates / layouts / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / miyembro / layouts / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouts / scripts" 
  2. Lumikha ng iyong Action Helper:
      <? Php
     / **
      * Sets ang layout landas sa isang per-module na batayan
      *
      * @ Akda Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Since 2010/01/01
      * /
     class Pro_Controller_Action_Helper_SetLayoutPath
         nagpalawak Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Sets layout path batay sa module
          * /
         pampublikong function preDispatch ()
         {
        	 $ Module = $ ito-> getRequest () -> getModuleName ();
    
    	     kung ($ bootstrap = $ ito-> getActionController ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         kung (isset ($ config ['layoutPath'] [$ module] ['resources'] ['layout'])) {
    	             $ LayoutPath =
    	                  $ Config [$ module] ['layoutPath'] ['resources'] ['layout'];
    	             $ Na ito-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. At sa wakas boostrap ang action helper:
      ...
         / **
          * Sets up scripts layout sa isang per-module na batayan
          * /
         protektado function _initLayoutHelper ()
    	 {
    	     $ Na ito-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         bagong Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 sagot sa "Zend Framework Per-Module batay setting"

  1. Behrang says:

    Hi unang salamat para sa iyong helpful tutorial ngunit sabihin sa akin kung saan gumawa ako action helper sa mangkukulam ng pangalan ng file?
    behrang

  2. Hi Behrang, lumikha ng mga action helper sa alinman ang pangalan na gusto mo, mayroon ako ng aking sariling 'library' sa namespace 'Pro'. Ikaw ay maaaring lamang bilang madaling tumawag sa 'SetLayoutPath' sa klase at ilagay ito kung saan man gusto, na ibinigay ng code ay maaaring mahanap ito at palawigin mo ang mga kinakailangang mga klase

  3. shashi kanth says:

    Hi, iam nalilito sa set up ng module tiyak na setting ng database ... ay kahit sino ay may isang ideya?

  4. tingin ko ito ay madaling nakakamit usign ang itaas na pattern. Una, lumikha ng mga opsyon sa iyong ini file kasama ang mga file ng:

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

    Pagkatapos lamang ang bumubuo ng iyong database koneksyon bilang na nakikita mo magkasya (Zend_Db:: factory () o katulad) at itago ito sa malayo sa registry o itakda ito bilang default na adapter kung gumagamit ng Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Mag-iwan ng isang Sumagot













Panorama Theme sa pamamagitan ng Themocracy

5 mga bisita sa online ngayon
4 mga bisita, 1 bots, 0 miyembro
Max mga bisita ngayon: 23 sa 04:19 UTC
Sa buwan na ito: 26 at 2011/07/05 12:35 UTC
Sa taong ito: 130 sa 28-03-2011 22:40 UTC
Lahat ng oras: 130 sa 28-03-2011 10:40 UTC