Zend Framework на модуль наладкі макета - Follow Up
Як прытрымлівацца да майго папярэдняга паста на кожны модуль заснаваны налады макета для Zend Framework , я абнавіў код патрабуе менш канфігурацыі, чым раней (не тое, што ён патрабуе больш, што некалькі радкоў у канфігурацыі дадатку!).
Зноў скарыстаемся Zend кантролера Памочнік спасылаецца на яго ад загрузкі наступным чынам:
/ **
* Стварае макет сцэнарыяў на кожнага модуля аснове
* /
ахоўных _initLayoutHelper функцыі ()
{
$ Гэтым-> загрузкі ('FrontController');
$ Макета = Zend_Controller_Action_HelperBroker:: addHelper (
новыя Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
}
Амаль дакладна так жа, як раней але на гэты раз мы перадаем пастаяннай APPLICATION_PATH у канструктару, як наш базавы шлях.
Наступная памочніка дзеянняў сама цяпер выглядае наступным чынам:
/ ** * Усталяванне макета шлях на кожнага модуля аснове * * @ Аўтар Лойд Уоткин * @ З 2010/02/16 * @ Пакет Pro * @ Подпакет Controller_Action_Helper * / / ** * Усталяванне макета шлях на кожнага модуля аснове * * @ Аўтар Лойд Уоткин * @ З 2010/02/16 * @ Пакет Pro * @ Подпакет Controller_Action_Helper * / Клас Pro_Controller_Action_Helper_SetLayoutPath пашырае Zend_Controller_Action_Helper_Abstract { / ** * Базавы шлях * * @ VAR радок * / ахоўных $ _path; / ** * Пабудаваць * * @ Параметраў радкі $ PATH * / публічную функцыю __construct ($ PATH) { $ Гэтым-> setBasePath ($ PATH); } / ** * Усталюйце базавы шлях * * @ Параметраў радкі $ PATH * / грамадскага setBasePath функцыі ($ PATH) { калі (is_string ($ PATH) | | пуста ($ PATH)) { кідаць новыя Exception ("Вызваленыя радок для асноўны шлях '); } $ Гэтым-> _path = $ PATH; } / ** * Атрымаць базавы шлях * * @ Вяртае радок * / ахоўных _getBasePath функцыі () { калі (is_null ($ гэтым-> _path)) { калі (! вызначаны ("APPLICATION_PATH ')) { кідаць новыя Exception ("Базавы шлях не можа быць вызначана '); } $ Гэтым-> _path = APPLICATION_PATH; } геЬигп $ ЬЫз-> _path; } / ** * Усталяванне макета шлях, заснаваны на модулі * / грамадскага preDispatch функцыі () { $ Модуль = preg_replace ( '/ [^ AZ] / я','', $ гэтым-> GetRequest () -> getModuleName () ); калі ($ = $ загрузкі гэтага-> getActionController () -> GetInvokeArg ("загрузкі")) { $ = $ Гледжання загрузкі-> GetResource ("Выгляд"); $ = $ LayoutPath гэтым-> _getBasePath (). "/ Модулі / {$ модуль} / макеты / скрыпты /"; / * Калі макет каталог існуе, то ўжываць яго, у адваротным выпадку проста ўпадуць * Назад па змаўчанні * / калі (is_dir ($ layoutPath)) { $ Гэтым-> getActionController () -> GetHelper ("макет") -> SetLayoutPath ($ layoutPath); $ Выгляд-> HeadLink () -> appendStylesheet ( "/ Стылі / {$ модуль} / style.css" ); } } } }
Звярніце ўвагу на праходжанне нашай базе шлях (пар. APPLICATION_PATH) у канструктар, мы таксама маем атрымання і ўстаноўкі для базавага шляху. У адрозненне ад папярэдняй версіі кода, калі макеты шляху не існуе, то код будзе адступаць шлях па змаўчанні макета. Калі базавы шлях не ўстаноўлены, ён будзе спрабаваць вызначыць асноўны шлях з пастаяннай APPLICATION_PATH, у адваротным выпадку выключэнне. Я таксама нахабна кінулі ў аснове модуля стыляў для добрай мерай
Модуль заснаваны макета вызначаецца Ці шлях да скрыпту макета існуе (відавочна, гэты метад можа быць лёгка зменена). Гэта дадаць трохі накладных ад application.ini ўстаноўкі (зрэшты, калі макет шлях існуе PHP будзе кэшаваць вынік для прадукцыйнасці *), але ўзамен вы атрымліваеце дадатковае зручнасць лягчэй зніжаецца ў новых модуляў.
Вось-вось, не моцна адрозніваецца, але вам не трэба дадаць новую запіс канфігурацыі кожны раз, калі вы хочаце дадаць новы модуль:)
* Каб ачысціць кэш (пры неабходнасці) выкарыстоўваць clearstatcache функцыі.


















































Прывітанне, калі ласка, скажыце мне, дзе для стварэння класа Pro_Controller_Action_Helper_SetLayoutPath, з якой імя файла
Я навічок ў Zend.
дзякуй
Прывітанне Behrang, стварыць памочнік дзеянні з якой імя вам падабаецца, у мяне ёсць свая "Бібліятэка" з прасторай імёнаў "Pro". Вы можаце так жа лёгка, называем "SetLayoutPath" класа і змясціць яго, дзе б вы хацелі, пры ўмове, код можа знайсці яго, і вы разьзяўляеце неабходныя класы