Zend Framework Per Module Stillingar Layout - Eftirfylgni
Til að fylgja til þess að skrifa mína fyrri á hverja einingu byggt stillingar skipulag fyrir Zend Framework , hef ég uppfært kóða til að þurfa minna stillingar þá áður (ekki það að það þarf meira að nokkrar línur í uppsetningu umsókn þína!).
Aftur við nýta sér Zend Controller Action Helper ákalla hann úr ræsi sem hér segir:
/ **
* Setur upp skipulag forskriftir á hverja einingu grundvelli
* /
vernda virka _initLayoutHelper ()
{
$ This-> ræsi ('frontController');
$ Skipulag = Zend_Controller_Action_HelperBroker:: addHelper (
ný Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
}
Næstum nákvæmlega það sama og áður nema í þetta sinn við að standast stöðug APPLICATION_PATH inn framkvæmdaaðila sem leið undirstaða okkar.
Næsta aðgerð stjórnandi hjálpar sjálft lítur nú sem hér segir:
/ ** * Setur skipulag slóð á hverja einingu grundvelli * * @ Höfundur Lloyd Watkin * @ Síðan 16/02/2010 * @ Pakki Pro * @ Subpackage Controller_Action_Helper * / / ** * Setur skipulag slóð á hverja einingu grundvelli * * @ Höfundur Lloyd Watkin * @ Síðan 16/02/2010 * @ Pakki Pro * @ Subpackage Controller_Action_Helper * / bekknum Pro_Controller_Action_Helper_SetLayoutPath nær Zend_Controller_Action_Helper_Abstract { / ** * Base slóð * * @ Var band * / vernduð $ _path; / ** * Búa * * @ Param streng $ slóð * / opinbera virka __construct ($ slóð) { $ This-> setBasePath ($ slóð); } / ** * Set stöð slóð * * @ Param streng $ slóð * / opinbera virka setBasePath ($ slóð) { if (is_string ($ slóð) |! | tómur ($ slóð)) { kasta nýju Exception ('excepted band fyrir slóð stöð'); } $ This-> _path = $ slóð; } / ** * Fá grunn slóð * * @ Skila streng * / vernda virka _getBasePath () { if (is_null ($ this-> _path)) { if (! skilgreint ('APPLICATION_PATH')) { kasta nýju Exception ("Base leið ekki hægt að ákvarða '); } $ This-> _path = APPLICATION_PATH; } aftur $ this-> _path; } / ** * Leikmynd skipulag slóð byggist á einingu * / opinbera virka preDispatch () { $ Mát = preg_replace ( '/ [^ Ö] / i','', $ this-> getRequest () -> getModuleName () ); if ($ ræsi = $ this-> getActionController () -> GetInvokeArg ('ræsi')) { $ Skoðað = $ ræsi-> getResource ('Skoða'); $ LayoutPath = $ this-> _getBasePath (). "/ Modules / {$ mát} / layout / scripts /"; / * Ef skrá skipulag er fyrir hendi þá sækja um það, annars bara falla * Aftur á sjálfgefið * / if (is_dir ($ layoutPath)) { $ This-> getActionController () -> GetHelper ('skipulag') -> SetLayoutPath ($ layoutPath); $ View-> headLink () -> appendStylesheet ( "/ Stíll / {$ mát} / style.css" ); } } } }
Athugið að brottför af leið undirstaða okkar (sbr. APPLICATION_PATH) í framkvæmdaaðila, við höfum líka getter og fuglahundur fyrir stöð leið. Ólíkt fyrri útgáfu af kóða ef skipulag slóð virkar ekki fyrir hendi þá kóðann mun falla aftur skipulag sjálfgefna slóð. Ef stöð leið er ekki sett það mun reyna að ákvarða stöð leið frá stöðugum APPLICATION_PATH, annars undantekning er kastað. Ég hef líka cheekily kastað í einingu byggir stíll lak fyrir gott mál
Einingin byggir skipulag er ákvörðuð út frá því hvort handritið skipulag leið er (augljóslega þessari aðferð er hægt að breyta auðveldlega). Þetta þýðir að bæta smá kostnaður frá application.ini skipulag (þó ef útlitið slóðina til PHP mun skyndiminni niðurstaða fyrir * árangri) en í staðinn að fá þægindi við auðveldara að detta í nýjar einingar.
Það er það, ekki mikið ólíkir, en þú þarft ekki að bæta við nýrri stillingu færslu í hvert sinn sem þú vilt bæta við nýrri einingu:)
* Til að hreinsa skyndiminni (ef þarf) að nota clearstatcache virka.


















































Hæ, vinsamlegast segja mér hvar á að búa til flokk Pro_Controller_Action_Helper_SetLayoutPath með hvaða skrá nafn
Ég er newbie í Zend.
takk
Hæ Behrang, búa til aðgerða hjálpar með hvort nafnið sem þú vilt, ég hef eigin 'bókasafnsins minn með Nafnrými' Pro '. Þú gætir alveg eins auðvelt að kalla SetLayoutPath 'bekknum og setti hana þar sem þú vilt, að því tilskildu að hægt er að finna það og þú framlengja þarf bekkjum