Zend okvirni Per Module Settings Layout - Nadaljnje delo

Z Steven Lloyd Watkin , v torek, 16. februar 2010 20:48

Kot nadaljevanje moje prejšnje delovno mesto na modul na osnovi postavitve nastavitve za Zend okvir , sem posodobljeno kodo, da zahteva manj konfiguracijo nato pred (ne, da je potrebna več kot nekaj vrstic v vaši uporabi konfiguracije!).

Spet se poslužujemo Zend nadzornika akcijski Helper ki se nanjo sklicuje z bootstrap na naslednji način:

     / **
      * Nastavi postavitev scenarijev na per-modul osnovi
      * /
     zaščitene funkcije _initLayoutHelper ()
	 {
	     $ To-> bootstrap ("frontController");
	     $ Postavitev = Zend_Controller_Action_HelperBroker:: addHelper (
	         nov Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
	 }

Skoraj popolnoma enako kot prej, razen tega časa peljemo stalno APPLICATION_PATH v gradbenik, kot je naša baza pot.

Naslednja pomočnik nadzornika sam ukrep sedaj izgleda takole:

 / **
  * Nastavi postavitev pot na per-modul osnovi
  *
  * @ Avtor Lloyd Watkin
  * @ Od 16.02.2010
  * @ Paket Pro
  * @ Subpackage Controller_Action_Helper
  * /

 / **
  * Nastavi postavitev pot na per-modul osnovi
  *
  * @ Avtor Lloyd Watkin
  * @ Od 16.02.2010
  * @ Paket Pro
  * @ Subpackage Controller_Action_Helper
  * /
 Razred Pro_Controller_Action_Helper_SetLayoutPath
     razširja Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * Base poti
	  *
	  * @ Var string
	  * /
	 zaščitena $ _path;

	 / **
	  * Construct
	  *
	  * @ Param string $ pot
	  * /
	 javno funkcijo __construct ($ pot)
	 {
	     $ To-> setBasePath ($ pot);
	 }

	 / **
	  * Nastavitev osnovne poti
	  *
	  * @ Param string $ pot
      * /
	 javno funkcijo setBasePath ($ pot)
	 {
		 if (is_string ($ pot) |! | prazna ($ pot)) {
			 vrgel novo Izjema ("Izvzeti niz za pot baze ');
		 }
		 $ To-> _path = $ pot;
	 }

	 / **
	  * Get baze pot
	  *
	  * @ Vrnitev niz
	  * /
	 zaščitene funkcije _getBasePath ()
	 {
		 if (is_null ($ to-> _path)) {
			 if (definirana! ('APPLICATION_PATH')) {
				 vrgel novo Izjema ("Base pot, ni mogoče določiti);
			 }
			 $ To-> _path = APPLICATION_PATH;
		 }
		 vrnitev $ to-> _path;
	 }

     / **
      * Nastavi postavitev pot, ki temelji na modulu
      * /
     javno funkcijo preDispatch ()
     {
    	 $ Modul = preg_replace (
    	     "/ [^ AZ] / i ','', $ to-> getRequest () -> getModuleName ()
    	 );

	     if ($ bootstrap = $ tega-> getActionController ()
	                        -> GetInvokeArg ("bootstrap")) {

	         $ $ = Pogled bootstrap-> getResource ('pogled');
	         LayoutPath $ = $ tega-> _getBasePath ().
	             "/ Modules / $ {modul} / postavitev / scripts /";

	         / * Če imenik postavitev obstaja, potem velja to, drugače padla
	          * Nazaj na privzeto
	          * /
	         if (is_dir ($ layoutPath)) {
	             $ To-> getActionController ()
	                  -> GetHelper ("postavitev")
	                  -> SetLayoutPath ($ layoutPath);
	             $ Pogled-> headLink () -> appendStylesheet (
	                 "/ Slogi / {$ modul} / style.css"
	             );
	         }
    	 }
     }
 }

Opomba mimo naše osnovne poti (prim. APPLICATION_PATH) v gradbenik, imamo tudi Človek, ki ustvarja in podajalca za osnovno pot. Za razliko od prejšnje različice kodo, če postavitev pot ne obstaja potem koda bo padel nazaj na pot privzeto postavitev. Če se osnovna poti ne nastavite, da bo poskusil za določitev osnove poti iz konstante APPLICATION_PATH, sicer se vrže izjema. Sem tudi cheekily vrgli v modulu osnovi slogov za dobro mero

Modul na osnovi postavitve se določi, ali postavitve scenarij pot obstaja (seveda lahko to metodo spremeniti brez težav). To pa dodamo malo vrha iz application.ini setup (če pa se postavitev pot obstaja PHP bo predpomnilnika rezultat za * delovanje), vendar v zameno boste pridobili dodano udobje lažje spustite v novih modulov.

To je to, ne razlikuje veliko, vendar vam ni treba dodati nov vpis, nastavitve vsakič, ko želite dodati nov modul:)

* Če želite zbrisati to predpomnilnika (če je potrebno) uporaba clearstatcache funkcijo.

2 odgovor v "Zend okvirni Per Module Settings Layout - Sledite Up"

  1. Behrang pravi:

    Hi, prosim povej mi kje za ustvarjanje razreda Pro_Controller_Action_Helper_SetLayoutPath, s katerimi ime datoteke
    Jaz sem newbie v Zend.
    hvala

  2. Hi Behrang, ustvarite ukrep helper z ustreznim imenom vam je všeč, imam svoj lasten "knjižnica" z namespace "Pro". Lahko bi prav tako enostavno klic v razred "SetLayoutPath" in ga, kjer koli vam je všeč, če kodo lahko najdejo ter razširitev zahteva razredov

Leave a Reply













Panorama Tema, ki jo Themocracy

6 obiskovalcev online zdaj
4 gostov, 2 pošto, 0 članov
Max Obiskovalcev danes: 14 ob 07:34 pm UTC
Ta mesec: 26 ob 2011/07/05 12:35 UTC
Letos: 130 28-03-2011 ob 22:40 UTC
Ves čas: 130 28-03-2011 ob 10:40 UTC