Здесь показаны различия между двумя версиями данной страницы.
Следущая версия | Предыдущая версия | ||
eaze:pages.xml [2011/09/11 23:51] sergeyfast создано |
eaze:pages.xml [2012/04/01 22:24] (текущий) sergeyfast |
||
---|---|---|---|
Строка 5: | Строка 5: | ||
Правила выполняются последовательно. Если первым идет правило с регулярным выражением “(.*)”, а вторым – “/”, то второе правило никогда не выполнится, так как его перекрывает первое. | Правила выполняются последовательно. Если первым идет правило с регулярным выражением “(.*)”, а вторым – “/”, то второе правило никогда не выполнится, так как его перекрывает первое. | ||
- | Для удобства правила можно определять в группы. А в группах определять глобальные действия до и после обработки url по найденному правилу. | + | Для удобства правила можно определять в группы. А в группах определять глобальные действия до (атрибут **//boot//**) и после (атрибут **//shutdown//**) обработки url по найденному правилу. |
+ | ===== Описание файла ===== | ||
+ | <code xml> | ||
+ | <sites> | ||
+ | <!-- Site Pages | ||
+ | name: site name, required | ||
+ | --> | ||
+ | <site name=""> | ||
+ | <!-- Pages Mapping --> | ||
+ | <pages> | ||
+ | <!-- Page Group. | ||
+ | You can combine pages into pageGroups | ||
+ | name: pagegroup name, default is empty | ||
+ | boot: following actions (comma separated) will be loaded before actions list, default is empty | ||
+ | shutdown: following actions (comma separated) will be loaded after actions list, default is empty | ||
+ | --> | ||
+ | <pageGroup boot="" shutdown=""> | ||
+ | <!-- Page Settings | ||
+ | @uri: regexp url, required | ||
+ | @boot: overrided parameter from pageGroup | ||
+ | @shutdown: overrided parameter from pageGroup | ||
+ | --> | ||
+ | <page uri="" boot="" shutdown=""> | ||
+ | <!-- Comma separated actions list --> | ||
+ | <actions></actions> | ||
+ | <!-- Template virtual path --> | ||
+ | <template></template> | ||
+ | </page> | ||
+ | </pageGroup> | ||
+ | | ||
+ | <!-- Page Settings | ||
+ | @uri: regexp url, required | ||
+ | @boot: overrided parameter from pageGroup | ||
+ | @shutdown: overrided parameter from pageGroup | ||
+ | --> | ||
+ | <page uri="" boot="" shutdown=""> | ||
+ | <!-- Comma separated actions list --> | ||
+ | <actions></actions> | ||
+ | <!-- Template virtual path --> | ||
+ | <template></template> | ||
+ | </page> | ||
+ | </pages> | ||
+ | | ||
+ | <!-- Optional hosts config --> | ||
+ | <hosts> | ||
+ | <host name="whoopass"> | ||
+ | <!-- Virtual Actions --> | ||
+ | <virtualActions> | ||
+ | <!-- Virtual Action | ||
+ | @name: current action name | ||
+ | value: new action name | ||
+ | --> | ||
+ | <action name="5uglov.Users.CheckLogin">5uglov.Users.CheckLogin_Sergeyfast</action> | ||
+ | </virtualActions> | ||
+ | </host> | ||
+ | </hosts> | ||
+ | </site> | ||
+ | </sites> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== Виртуальные экшены и цепочки вызовов ===== | ||
+ | |||
+ | Появилась поддержка цепочек вызовов экшенов (можно переопределять для разных хостов — это слегка модифицированные virtualActions). | ||
+ | |||
+ | ==== Пример конфига ==== | ||
+ | <code xml> | ||
+ | <sites> | ||
+ | <site name="Project"> | ||
+ | <hosts> | ||
+ | <host name="*"> | ||
+ | <action name="Chains.GetCommonBlocks">Project.Site.GetLastNews, Project.Site.GetRandPerson, Project.Site.ProcessDelayedItems</action> | ||
+ | </host> | ||
+ | </hosts> | ||
+ | <pages> | ||
+ | <page uri="/" boot="Chains.GetCommonBlocks, Project.Site.Test"> | ||
+ | </pages> | ||
+ | </site> | ||
+ | </sites> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== Препроцессинг статических методов, свойств и констант в pages.xml ===== | ||
+ | |||
+ | Иногда хочется избавиться от хардкода урлов в pages.xml. В trunk появилась возможность в атрибуте ''uri'' тега ''page'' использовать статические методы, свойства или константы. | ||
+ | |||
+ | Но не стоит увлекаться таким вариантом. Это понижает читаемость кода. | ||
+ | |||
+ | Механизм работы следующий. При при изменении содержания ''pages.xml'' создается новая кешированная версии ''pages.xml'' в папке ''cache''. В момент создания этого кешированной версии происходит замена соответствующих конструкций на результат их выполнения. В uri могут быть следующие варианты | ||
+ | |||
+ | <code xml> | ||
+ | <page uri="/{PageManagerTest::UrlPrefix}/" /> | ||
+ | <page uri="/{PageManagerTest::$UrlPrefix}/" /> | ||
+ | <page uri="/{PageManagerTest::UrlPrefix()}" /> | ||
+ | <page uri="/{PageManagerTest::UrlPrefix()}/{PageManagerTest::UrlPrefix}/combined/{2}/" /> | ||
+ | </code> | ||
+ | |||
+ | Где ''PageManagerTest::UrlPrefix'' - константа, ''$UrlPrefix'' - статическое свойство, ''UrlPrefix()'' - статический метод. | ||
+ | |||
+ | Данный метод не работает на страницах с ошибками (404.xml, 403.xml и т.д.). |