Zend Framework Per Module Stillingar Layout - Eftirfylgni

By Steven Lloyd Watkin , þriðjudaginn 16. febrúar 2010 20:48

Til að fylgja til þess að skrifa mína fyrri á hverja einingu byggt stillingar skipulag fyrir Zend Framework , hef ég uppfært kóða til að þurfa minna stillingar þá áður (ekki það að það þarf meira að nokkrar línur í uppsetningu umsókn þína!).

Aftur við nýta sér Zend Controller Action Helper ákalla hann úr ræsi sem hér segir:

     / **
      * Setur upp skipulag forskriftir á hverja einingu grundvelli
      * /
     vernda virka _initLayoutHelper ()
	 {
	     $ This-> ræsi ('frontController');
	     $ Skipulag = Zend_Controller_Action_HelperBroker:: addHelper (
	         ný Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
	 }

Næstum nákvæmlega það sama og áður nema í þetta sinn við að standast stöðug APPLICATION_PATH inn framkvæmdaaðila sem leið undirstaða okkar.

Næsta aðgerð stjórnandi hjálpar sjálft lítur nú sem hér segir:

 / **
  * Setur skipulag slóð á hverja einingu grundvelli
  *
  * @ Höfundur Lloyd Watkin
  * @ Síðan 16/02/2010
  * @ Pakki Pro
  * @ Subpackage Controller_Action_Helper
  * /

 / **
  * Setur skipulag slóð á hverja einingu grundvelli
  *
  * @ Höfundur Lloyd Watkin
  * @ Síðan 16/02/2010
  * @ Pakki Pro
  * @ Subpackage Controller_Action_Helper
  * /
 bekknum Pro_Controller_Action_Helper_SetLayoutPath
     nær Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * Base slóð
	  *
	  * @ Var band
	  * /
	 vernduð $ _path;

	 / **
	  * Búa
	  *
	  * @ Param streng $ slóð
	  * /
	 opinbera virka __construct ($ slóð)
	 {
	     $ This-> setBasePath ($ slóð);
	 }

	 / **
	  * Set stöð slóð
	  *
	  * @ Param streng $ slóð
      * /
	 opinbera virka setBasePath ($ slóð)
	 {
		 if (is_string ($ slóð) |! | tómur ($ slóð)) {
			 kasta nýju Exception ('excepted band fyrir slóð stöð');
		 }
		 $ This-> _path = $ slóð;
	 }

	 / **
	  * Fá grunn slóð
	  *
	  * @ Skila streng
	  * /
	 vernda virka _getBasePath ()
	 {
		 if (is_null ($ this-> _path)) {
			 if (! skilgreint ('APPLICATION_PATH')) {
				 kasta nýju Exception ("Base leið ekki hægt að ákvarða ');
			 }
			 $ This-> _path = APPLICATION_PATH;
		 }
		 aftur $ this-> _path;
	 }

     / **
      * Leikmynd skipulag slóð byggist á einingu
      * /
     opinbera virka preDispatch ()
     {
    	 $ Mát = preg_replace (
    	     '/ [^ Ö] / i','', $ this-> getRequest () -> getModuleName ()
    	 );

	     if ($ ræsi = $ this-> getActionController ()
	                        -> GetInvokeArg ('ræsi')) {

	         $ Skoðað = $ ræsi-> getResource ('Skoða');
	         $ LayoutPath = $ this-> _getBasePath ().
	             "/ Modules / {$ mát} / layout / scripts /";

	         / * Ef skrá skipulag er fyrir hendi þá sækja um það, annars bara falla
	          * Aftur á sjálfgefið
	          * /
	         if (is_dir ($ layoutPath)) {
	             $ This-> getActionController ()
	                  -> GetHelper ('skipulag')
	                  -> SetLayoutPath ($ layoutPath);
	             $ View-> headLink () -> appendStylesheet (
	                 "/ Stíll / {$ mát} / style.css"
	             );
	         }
    	 }
     }
 }

Athugið að brottför af leið undirstaða okkar (sbr. APPLICATION_PATH) í framkvæmdaaðila, við höfum líka getter og fuglahundur fyrir stöð leið. Ólíkt fyrri útgáfu af kóða ef skipulag slóð virkar ekki fyrir hendi þá kóðann mun falla aftur skipulag sjálfgefna slóð. Ef stöð leið er ekki sett það mun reyna að ákvarða stöð leið frá stöðugum APPLICATION_PATH, annars undantekning er kastað. Ég hef líka cheekily kastað í einingu byggir stíll lak fyrir gott mál

Einingin byggir skipulag er ákvörðuð út frá því hvort handritið skipulag leið er (augljóslega þessari aðferð er hægt að breyta auðveldlega). Þetta þýðir að bæta smá kostnaður frá application.ini skipulag (þó ef útlitið slóðina til PHP mun skyndiminni niðurstaða fyrir * árangri) en í staðinn að fá þægindi við auðveldara að detta í nýjar einingar.

Það er það, ekki mikið ólíkir, en þú þarft ekki að bæta við nýrri stillingu færslu í hvert sinn sem þú vilt bæta við nýrri einingu:)

* Til að hreinsa skyndiminni (ef þarf) að nota clearstatcache virka.

2 Svar til "Zend Framework Per Module Stillingar Layout - Eftirfylgni"

  1. Behrang segir:

    Hæ, vinsamlegast segja mér hvar á að búa til flokk Pro_Controller_Action_Helper_SetLayoutPath með hvaða skrá nafn
    Ég er newbie í Zend.
    takk

  2. Hæ Behrang, búa til aðgerða hjálpar með hvort nafnið sem þú vilt, ég hef eigin 'bókasafnsins minn með Nafnrými' Pro '. Þú gætir alveg eins auðvelt að kalla SetLayoutPath 'bekknum og setti hana þar sem þú vilt, að því tilskildu að hægt er að finna það og þú framlengja þarf bekkjum

Leave a Reply













Panorama Þema eftir Themocracy

17 gestir tengdir núna
12 gestir, 5 Botswana, 0 meðlimir
Max gestir í dag: 17 á 08:54 UTC
Þessi mánuður: 26 kl 2011/07/05 12:35 UTC
Á þessu ári: 130 kl 28-03-2011 22:40 UTC
Allra tíma: 130 kl 28-03-2011 10:40 UTC