Kuadër Zend Per Settings Layout Moduli - Follow Up

Nga Lloyd Watkin Steven , e martë 16 shkurt 2010 20:48

Si një vazhdim i mëparshëm postin tim më në bazë layout settings modul për Zend Kornizë , I've updated kodin që të kërkojë konfigurim më pak se më parë (jo se ajo kërkohet më shumë se disa rreshta në aplikimin e konfigurimit tuaj!).

Përsëri ne e bëjnë përdorimin e një Veprimi Kontrolluesi Helper Zend thirrur atë nga bootstrap si vijon:

     / **
      * Sets up scripts layout mbi një bazë për-modul
      * /
     _initLayoutHelper mbrojtura function ()
	 {
	     $ This-> bootstrap ('frontController');
	     $ = Layout Zend_Controller_Action_HelperBroker:: addHelper (
	         Pro_Controller_Action_Helper_SetLayoutPath ri (APPLICATION_PATH));
	 }

Pothuajse saktësisht të njëjta si më parë, përveç kësaj kohe do të kalojmë APPLICATION_PATH konstante në konstruktor si bazë rrugën tonë.

Next ndihmës veprimi kontrollues veten tani duket si vijon:

 / **
  * Vë në rrugën paraqitjen në një bazë për-modul
  *
  @ * Autori Lloyd Watkin
  * @ Viti 16/02/2010
  @ * Paketë Pro
  @ * Subpackage Controller_Action_Helper
  * /

 / **
  * Vë në rrugën paraqitjen në një bazë për-modul
  *
  @ * Autori Lloyd Watkin
  * @ Viti 16/02/2010
  @ * Paketë Pro
  @ * Subpackage Controller_Action_Helper
  * /
 Pro_Controller_Action_Helper_SetLayoutPath klasë
     shtrihet Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * Rrugën Base
	  *
	  * @ String var
	  * /
	 mbrojtur $ _path;

	 / **
	  * Ndërtimi
	  *
	  @ Param string * $ rrugë
	  * /
	 funksionit publik __construct ($ rrugë)
	 {
	     setBasePath $ this-> ($ rrugën);
	 }

	 / **
	  * Rrugën Set bazë
	  *
	  @ Param string * $ rrugë
      * /
	 setBasePath publik funksion ($ rrugë)
	 {
		 në qoftë se (is_string ($ rrugë) |! | zbrazët ($ rrugën e)) {
			 hedhin Përjashtim i ri ('string Përjashtohen për rrugën e bazës');
		 }
		 $ This-> _path = $ rrugë;
	 }

	 / **
	  * Get rrugën bazë
	  *
	  @ * Kthimit string
	  * /
	 _getBasePath mbrojtura function ()
	 {
		 në qoftë se (is_null ($ this-> _path)) {
			 if (! përcaktuar ('APPLICATION_PATH')) {
				 hedhin Përjashtim i ri ('rrugë Base nuk mund të përcaktohet');
			 }
			 $ This-> _path = APPLICATION_PATH;
		 }
		 kthim _path $ this->;
	 }

     / **
      * Rrugën e vë layout bazuar në modulin
      * /
     preDispatch publike function ()
     {
    	 $ = Modul preg_replace (
    	     '/ [^ AZ] / i','', $ this-> getRequest () -> getModuleName ()
    	 );

	     në qoftë se ($ bootstrap = getActionController $ this-> ()
	                        - GetInvokeArg> ('bootstrap')) {

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

	         / * Nëse directory layout ekziston atëherë aplikojnë atë, ndryshe vetëm rënia
	          * Përsëri në default
	          * /
	         në qoftë se (is_dir ($ layoutPath)) {
	             getActionController $ this-> ()
	                  - GetHelper> ('layout')
	                  - SetLayoutPath> ($ layoutPath);
	             $ Pamje-> headLink () -> appendStylesheet (
	                 "/ Stilet / {$ modul} / style.css"
	             );
	         }
    	 }
     }
 }

Shënim kalimin e rrugën tonë bazë (krh. APPLICATION_PATH) në konstruktor, ne gjithashtu kemi një njeri energjik dhe argjendar për rrugën bazë. Ndryshe nga varianti i parë i kodit qoftë se në rrugën Layouts nuk ekziston atëherë kod do të bjerë përsëri rrugën layout default. Qoftë se në rrugën bazë nuk është përcaktuar, do të përpiqen të përcaktojnë rrugën bazë nga APPLICATION_PATH konstante, përndryshe një përjashtim është hedhur. Unë e kam hedhur edhe cheekily në një fletë stili modul-bazë për masë të mirë

Layout modul i bazuar është e përcaktuar nga a script layout rrugën ekziston (pra kjo metodë mund të ndryshohet lehtë). Kjo ka shtuar një lart pak nga setup application.ini (megjithatë në qoftë se në rrugën layout ekziston PHP do cache rezultat për * punën), por në këmbim të fitojë më shumë komoditet e më të lehtë të rënë në modulet e reja.

That's it, jo shumë të ndryshme, por ju nuk keni nevojë të shtoni një shënim të ri konfigurimit çdo herë që dëshironi të shtoni një modul të ri:)

* Për të qartë këtë cache (nëse kërkohet) përdorin clearstatcache funksion.

2 Responses to "Zend Kornizë Per Settings Layout Moduli - Follow Up"

  1. Behrang thotë:

    Hi, ju lutem më tregoni se ku për të krijuar Pro_Controller_Action_Helper_SetLayoutPath klasë me të cilën emri i file
    Unë jam newbie në Zend.
    thanks

  2. Hi Behrang, të krijojë ndihmës veprim me cilado emrin që ju pëlqen, unë kam "bibliotekë" të mi me namespace 'Pro'. Ju mund po aq e lehtë thirrjen 'SetLayoutPath "të klasës dhe e vuri atë kudo që të pëlqen, me kusht që kodi mund të gjeni dhe të ju japë klasat e kërkuara

Leave a Reply













Theme Panorama nga Themocracy

7 vizitorë online tani
5 vizitorë, 2 bots, 0 anëtarë
Vizitorë Max sot: 26 at 00:46 UTC
Këtë muaj: 26 at 2011/07/05 12:35 UTC
Këtë vit: 130 në 10:40 UTC 28-03-2011
Gjithsej: 130 në 10:40 UTC 28-03-2011