Повідомлення з тегами: layoutPath

Zend Framework для кожного модуля на основі параметрів

За , в п'ятницю 1 січня 2010 10:40 вечора

Я створив наступних на цей пост, який вимагає менше конфігурації, див модуль на основі макета - Zend Framework .

При використанні Zend Framework, за допомогою модуля, його очевидним, що якщо ви працюєте з різними (суб-) сайти з однієї програми не обов'язково хочуть того ж, сценарії розкладка для кожної частини. Я вирішив піти з наступною структурою сайту:

  / Застосування
     / Контролери
         ...
     / Моделі
     / Модулів
         / По замовчуванню
             / Контролери
             / Розташування
                 / Скрипти
             / Переглядів
                 / Скрипти
         / AnotherModule
             ...
     / Скрипти

Проблема створення макета скрипти для кожного модуля. Відповідь прийшла через використання дій помічника. Налаштування розкладки на кожного модуля включає в себе три етапи:

  1. Application.ini (або аналогічні налаштування конфігурації):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ модулі / адміністратор / макети / скрипти"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ модулі / за замовчуванням / макети / скрипти"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ модулів / учасників / макети / скрипти"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ модулі / філії / макети / скрипти" 
  2. Створіть дії Helper:
      <? PHP
     / **
      * Встановлює розташування на шляху кожного модуля
      *
      * @ Автор Ллойд Уоткін <lloyd@evilprofessor.co.uk>
      * @ С 2010-01-01
      * /
     Клас Pro_Controller_Action_Helper_SetLayoutPath
         розширює Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Набори розташування шлях, заснований на модулі
          * /
         громадських preDispatch функції ()
         {
        	 Модуль $ = $ це-> GetRequest () -> getModuleName ();
    
    	     якщо ($ завантаження = $ це-> getActionController ()
    	                        -> GetInvokeArg ('завантаження')) {
    
    	         $ = $ Конфігурації завантаження-> getOptions ();
    
    	         якщо (Ісеть ($ CONFIG [$ модуль] ['ресурси'] ['схема'] ['layoutPath'])) {
    	             $ = LayoutPath
    	                  $ CONFIG [$ модуль] ['ресурси'] ['схема'] ['layoutPath'];
    	             $ Це-> getActionController ()
    	                  -> GetHelper («розташування»)
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. І, нарешті boostrap помічник дії:
      ...
         / **
          * Встановлює розташування скриптів на кожного модуля
          * /
         захищена функція _initLayoutHelper ()
    	 {
    	     $ Це-> завантаження ('FrontController');
    	     $ = Розташування Zend_Controller_Action_HelperBroker :: addHelper (
    	         новий Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 












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

4 відвідувачів онлайн
3 гостей, 1 ботів, 0 користувачів
Макс відвідувачів сьогодні: 13 в 9:36 ранку UTC
В цьому місяці: 40 в 23-05-2012 3:33 ранку UTC
У цьому році: 69 в 27-02-2012 9:56 UTC
За весь час: 130 в 28-03-2011 10:40 вечора UTC