PagingΒΆ

The Paginator generates links to walk through a paged result set. It returns an array of links (see Paginator::getPageBrowser).

$paginator = new \Xima\XmTools\Classes\Helper\Paginator();
$pageBrowser = $paginator->getPageBrowser(
        $countAllResult,
        $countItemsPerPage,
        $currentPage,
        $url
    );

$this->view->assign('pageBrowser', $pageBrowser);

A template to render the returned array is not yet part of xm_tools. An example template would look like:

{namespace xmTools = Xima\XmTools\Classes\ViewHelpers}

<f:if condition="{pageBrowser.countPages}">
    <nav class="pager-nav nav-js">
        <ul class="pagination">
            <f:if condition="{pageBrowser.prev}">
                <li>
                    <f:link.action arguments="{page: pageBrowser.prev, tab: tab}" title="{dict.list_pager_previous_page}">
                        <span class="icon icon-backward"></span>
                    </f:link.action>
                </li>
            </f:if>

            <f:if condition="{xmTools:object.ArrayCheck(array:pageBrowser.pages,needle:1,check:'NOT_IN_KEYS')}">
                <li>
                    <f:link.action arguments="{page: 1, tab: tab}">
                        1
                    </f:link.action>
                </li>
                <f:if condition="{xmTools:object.ArrayCheck(array:pageBrowser.pages,needle:2,check:'NOT_IN_KEYS')}">
                    <li>
                        ...
                    </li>
                </f:if>
            </f:if>

            <f:for each="{pageBrowser.pages}" as="page" key="n">
                <f:if condition="{page.current} == 0">
                    <f:then>
                        <li>
                            <f:link.action arguments="{page: n, tab: tab}">
                                {n}
                            </f:link.action>
                        </li>
                    </f:then>
                    <f:else>
                        <li class="active">
                            <a>{n}</a>
                        </li>
                    </f:else>
                </f:if>
            </f:for>

            <f:if condition="{xmTools:object.ArrayCheck(array:pageBrowser.pages,needle:pageBrowser.countPages,check:'NOT_IN_KEYS')}">
                <f:if condition="{xmTools:object.ArrayCheck(array:pageBrowser.pages,needle:pageBrowser.penUltimatePage,check:'NOT_IN_KEYS')}">
                    <li>
                        ...
                    </li>
                </f:if>
                <li>
                    <f:link.action arguments="{page: pageBrowser.countPages, tab: tab}">
                        {pageBrowser.countPages}
                    </f:link.action>
                </li>

            </f:if>

            <f:if condition="{pageBrowser.next}">
                <li>
                    <f:link.action arguments="{page: pageBrowser.next, tab: tab}" title="{dict.list_pager_next_page}">
                        <span class="icon icon-forward"></span>
                    </f:link.action>
                </li>
            </f:if>
        </ul>
    </nav>
</f:if>