Zend Рамковниот по модул распределба Settings - се надоврзе

Со Стивен Лојд Watkin , вторник 16 февруари 2010 20:48

Како надоврзување на мојот предходен пост по модул врз изгледот поставувања за Zend рамка , јас сум измена на кодот за да бараат помалку конфигурација тогаш пред (не дека тоа е потребно повеќе од неколку линии во вашата апликација, конфигурација!).

Повторно сме да го користат на Zend контролор акција Helper го повикува од подигање на следниов начин:

     / **
      * Поставува распоред скрипти на на-модул основа
      * /
     функција заштитена _initLayoutHelper ()
	 {
	     $ Ова-> bootstrap ('frontController');
	     $ Распоред = Zend_Controller_Action_HelperBroker:: addHelper (
	         нови Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
	 }

Скоро иста како пред освен тоа време се поминува постојано APPLICATION_PATH во конструкторот како нашата база на пат.

Следна контролорот акција помошник себе сега изгледа како што следува:

 / **
  * Поставување на изгледот патот на на-модул основа
  *
  * @ Author Лојд Watkin
  * @ Бидејќи 16/02/2010
  * @ Пакет Про
  * @ Subpackage Controller_Action_Helper
  * /

 / **
  * Поставување на изгледот патот на на-модул основа
  *
  * @ Author Лојд Watkin
  * @ Бидејќи 16/02/2010
  * @ Пакет Про
  * @ Subpackage Controller_Action_Helper
  * /
 класа Pro_Controller_Action_Helper_SetLayoutPath
     протега Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * База патот
	  *
	  * @ Var низа
	  * /
	 заштитени $ _path;

	 / **
	  * Конструирај
	  *
	  * @ $ String параметри патот
	  * /
	 јавна функција __construct ($ PATH)
	 {
	     $ Ова-> setBasePath ($ патека);
	 }

	 / **
	  * Поставете база на патот
	  *
	  * @ $ String параметри патот
      * /
	 јавна функција setBasePath ($ PATH)
	 {
		 ако (is_string ($ PATH)! | | празен ($ PATH)) {
			 фрли нова Исклучок ('исклучок стринг за базната патека ");
		 }
		 $ Ова-> _path = $ PATH;
	 }

	 / **
	  * Земете ја базната патека
	  *
	  * @ Врати стринг
	  * /
	 функција заштитена _getBasePath ()
	 {
		 ако (is_null ($ ова-> _path)) {
			 if (! дефинирани ('APPLICATION_PATH')) {
				 фрли нова Исклучок ('База патека не може да се утврди');
			 }
			 $ Ова-> _path = APPLICATION_PATH;
		 }
		 враќање $ ова-> _path;
	 }

     / **
      * Поставува распоред пат врз основа на модулот
      * /
     јавна функција preDispatch ()
     {
    	 $ Модул = preg_replace (
    	     "/ [^ AZ] / i ','', $ ова-> getRequest () -> getModuleName ()
    	 );

	     ако ($ подигање = $ ова-> getActionController ()
	                        -> GetInvokeArg ('подигање')) {

	         $ Погледнете = $ bootstrap-> getResource ('поглед');
	         $ LayoutPath = $ ова-> _getBasePath ().
	             "/ Modules / $ {} модул / скици / скрипти /";

	         / * Ако изгледот директориум постои тогаш се применува тоа, во спротивно само падне
	          * Назад на основната
	          * /
	         ако (is_dir ($ layoutPath)) {
	             $ Ова-> getActionController ()
	                  -> GetHelper ("распоред")
	                  -> SetLayoutPath ($ layoutPath);
	             $ View-> headLink () -> appendStylesheet (
	                 "/ Стилови / $ {} модул / style.css"
	             );
	         }
    	 }
     }
 }

Забелешка донесувањето на нашата база на патека (сп. APPLICATION_PATH) во конструкторот, ние исто така имаат кариерист и словослагател за базната патека. За разлика од претходната верзија на кодот, доколку распоред пат не постои тогаш ја шифрата ќе ти се врати на стандардниот распоред на патот. Ако основната патека не е поставен дека ќе се обиде да се утврди основната патека од постојаното APPLICATION_PATH, инаку исклучок е фрлена. Јас сум исто така cheekily фрлено во модул со седиште во стил лист за добра мерка

Модулот базирани распоред е определен од тоа дали на изгледот скрипта пат постои (очигледно овој метод може да се менува лесно). Ова се додава малку над глава од application.ini подесување (меѓутоа, ако постои патека распоред PHP ќе кеш резултат за ефикасноста *), но за возврат ќе добијат дополнителна погодност на полесно паѓајќи во нови модули.

Тоа е тоа, не многу различно, но вие не треба да додадете нова конфигурација влез секогаш кога ќе сакате да го додадете нов модул:)

* За да ја избришете оваа кеш (ако е потребно) употреба на clearstatcache функција.

2 Responses to "Zend Рамковниот по модул распределба Settings - следи"

  1. Behrang вели:

    Здраво, молам кажете ми каде да се создаде класа Pro_Controller_Action_Helper_SetLayoutPath со која името на датотеката
    Јас сум newbie во Zend.
    благодарение

  2. Здраво Behrang, создаде акцијата помошник со кое име ви се допаѓа, јас имам свој "библиотека" со именски простор 'Про. Вие би можеле многу лесно го нарекуваат "SetLayoutPath" класа и ја стави каде што некогаш ви се допаѓа, под услов на кодот може да го најде и да го продолжи бараниот класи

Оставете Одговори













Панорама Тема од Themocracy

8 посетители онлајн сега
5 Гости, 3-ботови, 0 членови
Макс посетители денес: 17 во 00:28 UTC
Овој месец: 26 во 2011/07/05 12:35 UTC
Оваа година: 28-03-2011 во 130 22:40 UTC
Сите времиња: 130 на 28-03-2011 10:40 UTC