CakePHP - Manual/Pagination /wiki/Manual/Pagination History/revisions of CakePHP/Manual/Pagination en-us 2008-01-05 11:38:50 /wiki/Manual/Pagination/show?time=2008-01-05+11%3A38%3A50 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.pagination" href="/wiki/Manual/Pagination" class="">/Manual&nbsp;/&nbsp;Pagination</a> за <a href="/wiki/Manual/Pagination?time=2008-01-05+11%3A38%3A50">2008-01-05 11:38:50</a> и <a href="/wiki/Manual/Pagination">2008-01-05 17:15:57</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><div class="indent">var $paginate = array(<br /> <div class="indent">'limit' =&gt; 5, <br /> 'order' =&gt; array(<br /> <div class="indent">'<span class="missingpage">Post.title</span><a href="/wiki/Post/title/edit?add=1" title="Создать эту страницу">?</a>' =&gt; 'asc'<br /> </div>)<br /> </div>);</div></div><br /> <b>Удалено:</b><br /> <div class="deletions"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'limit' =&gt; 25, <br /> ‘order' =&gt; array(<br /> <div class="indent"><div class="indent">'<span class="missingpage">Post.title</span><a href="/wiki/Post/title/edit?add=1" title="Создать эту страницу">?</a>' =&gt; 'asc'<br /> </div></div>)</div></div></div></div></div></div> 2008-01-05 11:23:35 /wiki/Manual/Pagination/show?time=2008-01-05+11%3A23%3A35 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Pagination" class="">/Manual&nbsp;/&nbsp;Pagination</a> за <a href="/wiki/Manual/Pagination?time=2008-01-05+11%3A23%3A35">2008-01-05 11:23:35</a> и <a href="/wiki/Manual/Pagination?time=2008-01-05+11%3A38%3A50">2008-01-05 11:38:50</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Обратите внимание: если ключ <tt>'update'</tt> не&nbsp;задан, <tt>PaginationHelper</tt> будет выводить обычные (не-ajax) ссылки.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Обратите внимание: если ключ 'update' не&nbsp;задан, <tt><span class="missingpage">Pagination&nbsp;Helper</span><a href="/wiki/PaginationHelper/edit?add=1" title="Создать эту страницу">?</a></tt> будет выводить обычные (не-ajax) ссылки.</div></div> 2008-01-05 11:22:46 /wiki/Manual/Pagination/show?time=2008-01-05+11%3A22%3A46 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Pagination" class="">/Manual&nbsp;/&nbsp;Pagination</a> за <a href="/wiki/Manual/Pagination?time=2008-01-05+11%3A22%3A46">2008-01-05 11:22:46</a> и <a href="/wiki/Manual/Pagination?time=2008-01-05+11%3A23%3A35">2008-01-05 11:23:35</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><!--notypo--><fieldset class="table_of_contents"><legend><strong> Оглавление документа </strong></legend><div class="toc1"><a href="#h127-2"> Настройка контроллера </a></div><div class="toc1"><a href="#h127-3"> Разбиение на&nbsp;страницы в&nbsp;отображениях </a></div><div class="toc1"><a href="#h127-4"> Разбиение на&nbsp;страницы с&nbsp;использованием ajax </a></div><div class="toc2"><a href="#h127-5"> Изменения в&nbsp;верстке </a></div><div class="toc2"><a href="#h127-6"> Изменения в&nbsp;отображении </a></div></fieldset><!--/notypo--></div></div> 2008-01-02 14:15:22 /wiki/Manual/Pagination/show?time=2008-01-02+14%3A15%3A22 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Pagination" class="">/Manual&nbsp;/&nbsp;Pagination</a> за <a href="/wiki/Manual/Pagination?time=2008-01-02+14%3A15%3A22">2008-01-02 14:15:22</a> и <a href="/wiki/Manual/Pagination?time=2008-01-05+11%3A22%3A46">2008-01-05 11:22:46</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Одним из&nbsp;основных препятствий при&nbsp;создании гибких и&nbsp;дружественных к&nbsp;пользователю веб-приложений является создание интуитивно-понятного интерфейса. Большинство приложений очень быстро разрастаются и&nbsp;разработчики обнаруживают, что&nbsp;они не&nbsp;в состоянии справиться с&nbsp;отображением сотен или&nbsp;даже тысяч записей. <a href="http://ru.wikipedia.org/wiki/Рефакторинг" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />Рефакторинг</a> долог, а&nbsp;производительность и&nbsp;удовлетворение пользователя могут пострадать.<br /> Отображение разумного количества записей на&nbsp;странице всегда было важной частью любого приложения и&nbsp;доставляло множество забот разработчикам. CakePHP облегчает участь разработчика, предоставляя ему&nbsp;быстрый и&nbsp;легкий путь разбиения данных по&nbsp;страницам.<br /> <tt>PaginatorHelper</tt> является отличным решением, потому что&nbsp;его легко использовать. Кроме собственно разбиения на&nbsp;страницы, он&nbsp;включает в&nbsp;себя несколько возможностей сортировки. Также поддерживается ajax-сортировка и&nbsp;разбиение на&nbsp;страницы.<br /> В&nbsp;контроллере мы&nbsp;установим параметры разбиения в&nbsp;переменной <tt>$paginate</tt>. Здесь следует упомянуть, что&nbsp;ключ сортировки (<tt>order</tt>) должен быть задан в&nbsp;виде массива.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> </span> </code></div><!--/notypo--><br /> Другие ключи, которые могут быть включены в&nbsp;массив <tt>$paginate</tt>, соответствуют параметрам метода <tt>Model-&gt;findAll()</tt> (<tt>conditions</tt>, <tt>fields</tt>, <tt>order</tt>, <tt>limit</tt>, <tt>page</tt> и&nbsp;<tt>recursive</tt>). Можно определить несколько наборов параметров в&nbsp;контроллере, достаточно просто разместить их&nbsp;после модели, которую необходимо настроить. <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> 'Recipe'&nbsp;=&gt;&nbsp;array&nbsp;(...),</span> </code></div><!--/notypo--><br /> После того, как&nbsp;переменная <tt>$paginate</tt> определена, можно вызвать метод <tt>paginate()</tt> в&nbsp;действиях контроллера. Он&nbsp;вернет результаты вызова <tt>findAll()</tt>, разбитые на&nbsp;страницы, а&nbsp;также передаст дополнительную статистику в&nbsp;отображение. Этот метод также добавляет <tt>PaginatorHelper</tt> в&nbsp;список хелперов контроллера, если это&nbsp;еще не&nbsp;было сделано.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> function&nbsp;list_recipes()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;аналогично&nbsp;findAll(),&nbsp;но&nbsp;результат&nbsp;разбит&nbsp;на&nbsp;страницы</span> </code></div><!--/notypo--><br /> Ваше дело решать, как&nbsp;показывать данные пользователю, но&nbsp;чаще всего они&nbsp;отображаются в&nbsp;HTML таблицах. Пример ниже предполагает размещение в&nbsp;таблице, но&nbsp;<tt>PaginatorHelper</tt>, доступный в&nbsp;отображениях не&nbsp;всегда должен быть так&nbsp;ограничен.<br /> Как&nbsp;упоминалось, <tt>PaginatorHelper</tt> предоставляет возможности сортировки, которые могут быть интегрированы в&nbsp;заголовки таблицы:<br /> app/views/recipes/list_recipes.ctp<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> &lt;/table&gt;</span> </code></div><!--/notypo--><br /> Ссылки, которые создает метод <tt>PaginatorHelper-&gt;sort()</tt>, позволяют пользователю сортировать данные по&nbsp;определенному полю, щелкнув на&nbsp;заголовке столбца таблицы.<br /> И&nbsp;последний ингредиент разбиения на&nbsp;страницы в&nbsp;отображениях –- навигация по&nbsp;страницам, также генерируемая <tt>PaginatorHelper</tt>.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> &lt;!--&nbsp;Отображает&nbsp;ссылки&nbsp;на&nbsp;предыдущую&nbsp;и&nbsp;следующую&nbsp;страницы--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$paginator-&gt;prev('&lt;&lt;&nbsp;Previous&nbsp;',&nbsp;null,&nbsp;null,&nbsp;array('class'&nbsp;=&gt;&nbsp;'disabled'));<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$paginator-&gt;next('&nbsp;Next&nbsp;&gt;&gt;',&nbsp;null,&nbsp;null,&nbsp;array('class'&nbsp;=&gt;&nbsp;'disabled'));<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$paginator</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">counter</span><span style="color: #007700">()&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> Вывод метода <tt>counter()</tt> может быть настроен с&nbsp;помощью специальных маркеров:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> echo&nbsp;$paginator-&gt;counter(<br />&nbsp;&nbsp;&nbsp;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'format'&nbsp;=&gt;&nbsp;'Страница&nbsp;%page%&nbsp;из&nbsp;%pages%,&nbsp;просматривается&nbsp;%current%&nbsp;записей<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;из&nbsp;%count%&nbsp;всего,&nbsp;начиная&nbsp;с&nbsp;%start%и&nbsp;заканчивая&nbsp;на&nbsp;%end%'<br />&nbsp;&nbsp;&nbsp;&nbsp;)<br />);</span> </code></div><!--/notypo--><br /> В&nbsp;разбиение страниц легко добавить ajax-функциональность. Единственное, что&nbsp;потребуется –- это&nbsp;подключить js-библиотеку Prototype, установить индикатор (иконка загрузки внутри DIV’а) и&nbsp;указать DIV, который будет обновляться вместо перезагрузки страницы.<br /> В&nbsp;заголовке подключаем Prototype, устанавливаем индикатор (spinner.gif), и&nbsp;определяем DIV&nbsp;с&nbsp;содержимым (&laquo;content&raquo;).<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> &lt;html&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$title_for_layout</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;</span>&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$javascript</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">link</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'prototype'</span><span style="color: #007700">));&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;style&nbsp;type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div.disabled&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;inline;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float:&nbsp;none;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clear:&nbsp;none;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;#C0C0C0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/style&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="main"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="spinner"&nbsp;style="display:&nbsp;none;&nbsp;float:&nbsp;right;"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$html</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image</span><span style="color: #007700">(</span><span style="color: #DD0000">'spinner.gif'</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="content"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$content_for_layout</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;</span> </code></div><!--/notypo--><br /> Единственная дополнительная настройка для&nbsp;разбиения на&nbsp;страницы с&nbsp;использованием ajax производится с&nbsp;помощью метода <tt>PaginationHelper::options()</tt>, который определяет необходимые параметры ajax. В&nbsp;данном случае, мы&nbsp;определяем, что&nbsp;все ссылки должны обновлять элемент, ID&nbsp;которого равен <tt>&#147;content&#148;</tt>, данными и&nbsp;во время загрузки будет отображаться <tt>&#147;spinner&#148;</tt>.<br /> Обратите внимание: если ключ 'update' не&nbsp;задан, <tt><span class="missingpage">Pagination&nbsp;Helper</span><a href="/wiki/PaginationHelper/edit?add=1" title="Создать эту страницу">?</a></tt> будет выводить обычные (не-ajax) ссылки.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$paginator</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">counter</span><span style="color: #007700">();&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--></div><br /> <b>Удалено:</b><br /> <div class="deletions">Одним из&nbsp;основных препятствий при&nbsp;создании гибких и&nbsp;дружественных к&nbsp;пользователю веб-приложений является создание интуитивно-понятного интерфейса. Большинство приложений очень быстро разрастаются и&nbsp;разработчики обнаруживают, что&nbsp;они не&nbsp;в состоянии справиться с&nbsp;отображением сотен или&nbsp;даже тысяч записей. Рефакторинг долог, а&nbsp;производительность и&nbsp;удовлетворение пользователя могут пострадать.<br /> Отображение разумного количества записей на&nbsp;странице всегда было важной частью любого приложения и&nbsp;доставляло множество забот разработчикам. <span class="missingpage">Cake&nbsp;PHP</span><a href="/wiki/CakePHP/edit?add=1" title="Создать эту страницу">?</a> облегчает участь разработчика, предоставляя ему&nbsp;быстрый и&nbsp;легкий путь разбиения данных по&nbsp;страницам.<br /> <span class="missingpage">Paginator&nbsp;Helper</span><a href="/wiki/PaginatorHelper/edit?add=1" title="Создать эту страницу">?</a> является отличным решением, потому что&nbsp;его легко использовать. Кроме собственно разбиения на&nbsp;страницы, он&nbsp;включает в&nbsp;себя несколько возможностей сортировки. Также поддерживается ajax сортировка и&nbsp;разбиение на&nbsp;страницы.<br /> В&nbsp;контроллере мы&nbsp;установим параметры разбиения в&nbsp;переменной $paginate контроллера. Здесь следует упомянуть, что&nbsp;ключ сортировки должен быть задан в&nbsp;виде массива.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br />?&gt;</span> </span> </code></div><!--/notypo--><br /> Другие ключи, которые могут быть включены в&nbsp;массив $paginate, соответствуют параметрам метода Model-&gt;findAll() (conditions, fields, order, limit, page и&nbsp;recursive). Можно определить несколько наборов параметров в&nbsp;контроллере, достаточно просто разместить их&nbsp;после модели, которую необходимо настроить. <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'Recipe'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array&nbsp;(...)&nbsp;,<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> После того, как&nbsp;переменная $paginate определена, можно вызвать метод paginate() в&nbsp;действиях контроллера. Он&nbsp;вернет результаты вызова findAll(), разбитые на&nbsp;страницы, а&nbsp;также передаст дополнительную статистику в&nbsp;отображение. Этот метод также добавляет <span class="missingpage">Paginator&nbsp;Helper</span><a href="/wiki/PaginatorHelper/edit?add=1" title="Создать эту страницу">?</a> в&nbsp;список хелперов контроллера, если это&nbsp;еще не&nbsp;было сделано.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> function&nbsp;list_recipes()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;similar&nbsp;to&nbsp;findAll(),&nbsp;but&nbsp;fetches&nbsp;paged&nbsp;results<br />}</span> </code></div><!--/notypo--><br /> Ваше дело решать, как&nbsp;показывать данные пользователю, но&nbsp;чаще всего они&nbsp;отображаются в&nbsp;HTML таблицах. Пример ниже предполагает размещение в&nbsp;таблице, но&nbsp;<span class="missingpage">Paginator&nbsp;Helper</span><a href="/wiki/PaginatorHelper/edit?add=1" title="Создать эту страницу">?</a>, доступный в&nbsp;отображениях не&nbsp;всегда должен быть так&nbsp;ограничен.<br /> Как&nbsp;упоминалось, <span class="missingpage">Paginator&nbsp;Helper</span><a href="/wiki/PaginatorHelper/edit?add=1" title="Создать эту страницу">?</a> предоставляет возможности сортировки, которые могут быть интегрированы в&nbsp;заголовки таблицы:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> //&nbsp;app/views/recipes/list_recipes.ctp<br />&lt;/table&gt;</span> </code></div><!--/notypo--><br /> Ссылки, которые создает метод <span class="missingpage">Paginator&nbsp;Helper</span><a href="/wiki/PaginatorHelper/edit?add=1" title="Создать эту страницу">?</a>-&gt;sort(), позволяют пользователю сортировать данные по&nbsp;определенному полю, щелкнув на&nbsp;заголовке столбца таблицы.<br /> И&nbsp;последний ингредиент разбиения на&nbsp;страницы в&nbsp;отображениях – навигация по&nbsp;страницам, также генерируемая <span class="missingpage">Paginator&nbsp;Helper</span><a href="/wiki/PaginatorHelper/edit?add=1" title="Создать эту страницу">?</a>’ом.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> &lt;!--&nbsp;Отображает&nbsp;ссылки&nbsp;на&nbsp;предыдущую&nbsp;и&nbsp;следующую&nbsp;страницы--&gt;<br />echo&nbsp;$paginator-&gt;prev('&lt;&lt;&nbsp;Previous&nbsp;',&nbsp;null,&nbsp;null,&nbsp;array('class'&nbsp;=&gt;&nbsp;'disabled'));<br />echo&nbsp;$paginator-&gt;next('&nbsp;Next&nbsp;&gt;&gt;',&nbsp;null,&nbsp;null,&nbsp;array('class'&nbsp;=&gt;&nbsp;'disabled'));<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$paginator</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">counter</span><span style="color: #007700">();&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> Вывод метода counter() может быть настроен с&nbsp;помощью специальных маркеров:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$paginator</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">counter</span><span style="color: #007700">(array(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'format'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Page&nbsp;%page%&nbsp;of&nbsp;%pages%,&nbsp;showing&nbsp;%current%&nbsp;records&nbsp;out&nbsp;of<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%count%&nbsp;total,&nbsp;starting&nbsp;on&nbsp;record&nbsp;%start%,&nbsp;ending&nbsp;on&nbsp;%end%'<br /></span><span style="color: #007700">));&nbsp;<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> В&nbsp;разбиение страниц легко добавить ajax-функциональность. Единственное, что&nbsp;потребуется – это&nbsp;подключить js-библиотеку Prototype, установить индикатор (иконка загрузки внутри DIV’а) и&nbsp;указать DIV, который будет обновляться вместо перезагрузки страницы.<br /> В&nbsp;заголовке подключаем Prototype, устанавливаем индикатор (spinner.gif), и&nbsp;определяем DIV&nbsp;с&nbsp;содержимым (“content”).<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> &lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$title_for_layout</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;</span>&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$javascript</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">link</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'prototype'</span><span style="color: #007700">));&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;style&nbsp;type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div.disabled&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;inline;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float:&nbsp;none;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clear:&nbsp;none;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;#C0C0C0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/style&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;div&nbsp;id="main"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="spinner"&nbsp;style="display:&nbsp;none;&nbsp;float:&nbsp;right;"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$html</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image</span><span style="color: #007700">(</span><span style="color: #DD0000">'spinner.gif'</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="content"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$content_for_layout</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&lt;/div&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</span> </code></div><!--/notypo--><br /> Единственная дополнительная настройка для&nbsp;разбиения на&nbsp;страницы с&nbsp;использованием ajax производится с&nbsp;помощью метода <span class="missingpage">Pagination&nbsp;Helper</span><a href="/wiki/PaginationHelper/edit?add=1" title="Создать эту страницу">?</a>::options(), который определяет необходимые параметры ajax. В&nbsp;данном случае, мы&nbsp;определяем, что&nbsp;все ссылки должны обновлять элемент, ID&nbsp;которого равен ”content”, данными и&nbsp;во время загрузки будет отображаться 'spinner'.<br /> Обратите внимание: если ключ ‘update’ не&nbsp;задан, <span class="missingpage">Pagination&nbsp;Helper</span><a href="/wiki/PaginationHelper/edit?add=1" title="Создать эту страницу">?</a> будет выводить обычные (не-ajax) ссылки.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">&lt;?</span><span style="color: #0000BB">php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$paginator</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">counter</span><span style="color: #007700">();&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--></div></div>