Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

воскресенье, 31 января 2010 г.

Из руководства Doctrine 1.1 вольный перевод. Пейджинг (продолжение).

Виды стилей виджетов постраничного вывода.

Есть несколько случаев, когда простых пейджеров недостаточно. Одним из примеров является ситуация, когда вы хотите создать перечисления ссылок на страницы. Для более мощного контроля над поведением пейджера, есть небольшая часть пакета пейджинга, которая позволяет вам создавать диапазоны.

В настоящее время ORM Doctrine реализует два типа (или стиля) диапазонов: скольжение (слайдинг, реализовано в Doctrine_Pager_Range_Sliding) и прыжки (jumping, реализовано в Doctrine_Pager_Range_Jumping).

Слайдинг.

Раздвижной (слайдер) стиль диапазона страниц, на странице плавно переходит с текущей страницы. Текущая страница всегда в центре, за исключением первой и последней страницы диапазона. Проверьте, как она работает на примере длинной 5 пунктов:


Listing 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Page 1: o-------|
Page 2: |-o-----|
Page 3: |---o---|
Page 4: |---o---|
Page 5: |---o---|
Page 6: |---o---|
Page 7: |---o---|
Page 8: |---o---|


Джампинг.
Диапазон ссылок на странице всегда ссылается на фиксированный набор фреймов 1-5, 6-10, 11-15 и так далее.

Listing 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Page 1: o-------|
Page 2: |-o-----|
Page 3: |---o---|
Page 4: |-----o-|
Page 5: |-------o
Page 6: o---------|
Page 7: |-o-------|
Page 8: |---o-----|


Теперь, когда мы знаем, каким образом ведут себя различные стили работы пейджера, настало время научиться использовать их:


$pagerRange = new Doctrine_Pager_Range_Sliding(
array(
'chunk' => 5 // Chunk length
),
$pager // Doctrine_Pager object we learned how to create in previous topic
);


или другой вариант:


$pagerRange = $pager->getRange(
'Sliding',
array(
'chunk' => 5
)
);


В чем состоит преимущество использования данного объекта, а не Doctrine_Pager? Только в одном - он позволяет получить диапазоны вокруг текущей страницы.

Посмотрите на пример:


// Retrieves the range around the current page
// In our example, we are using sliding style and we are at page 1
$pages = $pager_range->rangeAroundPage();

// Outputs: [1][2][3][4][5]
echo '['. implode('][', $pages) .']';


Если вы строите свой Doctrine_Pager внутри диапазона объектов, API предоставляет вам достаточно возможностей, чтобы получить информацию, связанную с подклассом Doctrine_Pager_Range, например:


// Return the Pager associated to this Pager_Range
$pager_range->getPager();

// Defines a new Doctrine_Pager (automatically call _initialize protected method)
$pager_range->setPager($pager);

// Return the options assigned to the current Pager_Range
$pager_range->getOptions();

// Returns the custom Doctrine_Pager_Range implementation offset option
$pager_range->getOption($option);

// Check if a given page is in the range
$pager_range->isInRange($page);

// Return the range around the current page (obtained from Doctrine_Pager
// associated to the $pager_range instance)
$pager_range->rangeAroundPage();

Комментариев нет:

Отправить комментарий