Инструменты пользователя

Инструменты сайта


eaze:pages.xml

pages.xml

В pages.xml описываются правила для обработки url. Правило представляет собой регулярное выражение для url, описание выполняемых действий (actions) и вывод шаблон (template).

Правила выполняются последовательно. Если первым идет правило с регулярным выражением “(.*)”, а вторым – “/”, то второе правило никогда не выполнится, так как его перекрывает первое.

Для удобства правила можно определять в группы. А в группах определять глобальные действия до (атрибут boot) и после (атрибут shutdown) обработки url по найденному правилу.

Описание файла

<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>

Виртуальные экшены и цепочки вызовов

Появилась поддержка цепочек вызовов экшенов (можно переопределять для разных хостов — это слегка модифицированные virtualActions).

Пример конфига

<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> 

Препроцессинг статических методов, свойств и констант в pages.xml

Иногда хочется избавиться от хардкода урлов в pages.xml. В trunk появилась возможность в атрибуте uri тега page использовать статические методы, свойства или константы.

Но не стоит увлекаться таким вариантом. Это понижает читаемость кода.

Механизм работы следующий. При при изменении содержания pages.xml создается новая кешированная версии pages.xml в папке cache. В момент создания этого кешированной версии происходит замена соответствующих конструкций на результат их выполнения. В uri могут быть следующие варианты

<page uri="/{PageManagerTest::UrlPrefix}/" />
<page uri="/{PageManagerTest::$UrlPrefix}/" />
<page uri="/{PageManagerTest::UrlPrefix()}" />
<page uri="/{PageManagerTest::UrlPrefix()}/{PageManagerTest::UrlPrefix}/combined/{2}/" />

Где PageManagerTest::UrlPrefix - константа, $UrlPrefix - статическое свойство, UrlPrefix() - статический метод.

Данный метод не работает на страницах с ошибками (404.xml, 403.xml и т.д.).

eaze/pages.xml.txt · Последние изменения: 2012/04/01 22:24 — sergeyfast