Кастомизация LinkPager::widget

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Кастомизация LinkPager::widget

Сообщение Pirojog »

Необходимо сделать пагинацию из трех кнопок: Поясню:
первое – назад, второе – страница, третье – вперед

И к каждому нужно задать свой класс... Как только не пытался:

Код: Выделить всё

            
            echo \yii\widgets\LinkPager::widget([
                    'pagination' => $pages,
                    'options' => [
                        'class' => 'filter_nav',
                        'firstPageLabel' => '',
                        'lastPageLabel' => '',
                        'prevPageLabel' => 'previous',
                        'nextPageLabel' => 'next',

                        'pageCssClass' => 'filter_nav',
                        'nextPageCssClass' => 'prev_s',
                        'nextPageCssClass' => 'next_s',

                        'firstPageCssClass' => 'lknflbes',
                        'maxButtonCount' => 1,
                    ]
                ]);
Не работает, все options добавляются в атрибуты в ul...
Да и вообще выглядит не так, подскажите пожалуйста, что делаю не так
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Ну первый вопрос про три кнопки - решение уже у вас есть...

Код: Выделить всё

                'pager' => [
                    'class' => '\yii\widgets\LinkPager',
                    'maxButtonCount'=>1,
                    'prevPageLabel'=>'‹',
                    'nextPageLabel'=>'›',
                ]
Последний раз редактировалось mat.twg 2017.02.15, 03:27, всего редактировалось 1 раз.
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:22 $maxButtonCount

Код: Выделить всё

'maxButtonCount'=>1
выставленно же!
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Так а что надо то стили выставить куДА? есть дефолтные next, prev, active - задайте стиль для контейнера, а дальше типа

Код: Выделить всё

.мой_стиль > .active.... и т.д...
Последний раз редактировалось mat.twg 2017.02.15, 03:30, всего редактировалось 1 раз.
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:28 Так а что надо то стили выставить куДА? есть дефолтные next, prev, active
prev, страница, next
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Если у вас 1 страница всего - она всегда будет с классом active -логично?
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:31 Если у вас 1 страница всего - она всегда будет с классом active -логично?
логично, но почему 1 страница только?
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Почему? =) Это у вас надо спросить!
Pirojog писал(а): 2017.02.15, 03:18 Необходимо сделать пагинацию из трех кнопок: Поясню:
первое – назад, второе – страница, третье – вперед
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:37 Почему? =) Это у вас надо спросить!
Pirojog писал(а): 2017.02.15, 03:18 Необходимо сделать пагинацию из трех кнопок: Поясню:
первое – назад, второе – страница, третье – вперед
Так это пример, 1 – текущая страница
пусть будет <- 5 ->
Так понятнее?
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Что у 1 - будет active, что у 5 будет active... не нравится, пробуйте $pageCssClass, не нравится - наследуйте от линкпейджера свой класс...
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:41 Что у 1 - будет active, что у 5 будет active... не нравится, пробуйте $pageCssClass, не нравится - наследуйте от линкпейджера свой класс...
Должно быть так:

Код: Выделить всё

            
            <div class="filter_nav">
                <a href="" class="prev_s  active"></a>
                <a href="">1</a>
                <a href="" class="next_s"></a>
            </div>
Да причем тут актив...
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

Я вообще не про active говорю, с ним все норм
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Предполагаю, что в сторону $view... а по-большому счёту, если нужен свой html - наследуйте класс, переопределяйте рендр, как вам угодно.
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:51 Предполагаю, что в сторону $view... а по-большому счёту, если нужен свой html - наследуйте класс, переопределяйте рендр, как вам угодно.
Класс уже наследовал, дивы нормально рендерит. Вы никак не можете понять мою проблему. Давайте попроще попробуем:

Код: Выделить всё

<ul class="pag">
	<li class="prev"></li>
	<li">2</li>
	<li class="next"></li>
Вот такое можно сделать?
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Где наследовал? Почему я вижу в исходном посте \yii\widgets\LinkPager::widget ? У вас должен быть свой виджет, основанный на LinkPager, а там меняйте всё что угодно и как угодно - откройте класс и посмотрите.
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 03:58 Где наследовал? Почему я вижу в исходном посте \yii\widgets\LinkPager::widget ? У вас должен быть свой виджет, основанный на LinkPager, а там меняйте всё что угодно и как угодно - откройте класс и посмотрите.

Код: Выделить всё

class DivPager extends LinkPager
{
    protected function renderPageButtons()
    {
        $pageCount = $this->pagination->getPageCount();
        if ($pageCount < 2 && $this->hideOnSinglePage) {
            return '';
        }

        $buttons = [];
        $currentPage = $this->pagination->getPage();

        // first page
        $firstPageLabel = $this->firstPageLabel === true ? '1' : $this->firstPageLabel;
        if ($firstPageLabel !== false) {
            $buttons[] = $this->renderPageButton($firstPageLabel, 0, $this->firstPageCssClass, $currentPage <= 0, false);
        }

        // prev page
        if ($this->prevPageLabel !== false) {
            if (($page = $currentPage - 1) < 0) {
                $page = 0;
            }
            $buttons[] = $this->renderPageButton($this->prevPageLabel, $page, $this->prevPageCssClass, $currentPage <= 0, false);
        }

        // internal pages
        list($beginPage, $endPage) = $this->getPageRange();
        for ($i = $beginPage; $i <= $endPage; ++$i) {
            $buttons[] = $this->renderPageButton($i + 1, $i, null, false, $i == $currentPage);
        }

        // next page
        if ($this->nextPageLabel !== false) {
            if (($page = $currentPage + 1) >= $pageCount - 1) {
                $page = $pageCount - 1;
            }
            $buttons[] = $this->renderPageButton($this->nextPageLabel, $page, $this->nextPageCssClass, $currentPage >= $pageCount - 1, false);
        }

        // last page
        $lastPageLabel = $this->lastPageLabel === true ? $pageCount : $this->lastPageLabel;
        if ($lastPageLabel !== false) {
            $buttons[] = $this->renderPageButton($lastPageLabel, $pageCount - 1, $this->lastPageCssClass, $currentPage >= $pageCount - 1, false);
        }

        return Html::tag('div', implode("\n", $buttons), $this->options);
    }

    protected function renderPageButton($label, $page, $class, $disabled, $active)
    {
        $options = ['class' => empty($class) ? $this->pageCssClass : $class];
        if ($active) {
            Html::addCssClass($options, $this->activePageCssClass);
        }
        if ($disabled) {
            Html::addCssClass($options, $this->disabledPageCssClass);
            $tag = ArrayHelper::remove($this->disabledListItemSubTagOptions, 'tag', 'span');

            return Html::tag('li', Html::tag($tag, $label, $this->disabledListItemSubTagOptions), $options);
        }
        $linkOptions = $this->linkOptions;
        $linkOptions['data-page'] = $page;

        return Html::a($label, $this->pagination->createUrl($page), $linkOptions);
    }
}

Код: Выделить всё

                            echo \app\components\DivPager::widget([
                                'pagination' => $pages,
                                'options' => [
                                    'class' => 'filter_nav',
                                ],
                                'maxButtonCount'=>1,
                                'prevPageLabel'=>'&lsaquo;',
                                'nextPageLabel'=>'&rsaquo;',
                                'prevPageCssClass' => 'prev_s',
                                'nextPageCssClass' => 'next_s',

                                'maxButtonCount' => 1,
                            ]);?>

Проблема не в div или ul...
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Задачу сформируйте верно, я никаких проблем не вижу.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

Pirojog писал(а): 2017.02.15, 03:54
mat.twg писал(а): 2017.02.15, 03:51 Предполагаю, что в сторону $view... а по-большому счёту, если нужен свой html - наследуйте класс, переопределяйте рендр, как вам угодно.
Класс уже наследовал, дивы нормально рендерит. Вы никак не можете понять мою проблему. Давайте попроще попробуем:

Код: Выделить всё

<ul class="pag">
	<li class="prev"></li>
	<li">2</li>
	<li class="next"></li>
Вот такое можно сделать?
Можно
Pirojog
Сообщения: 96
Зарегистрирован: 2017.02.09, 01:34

Re: Кастомизация LinkPager::widget

Сообщение Pirojog »

mat.twg писал(а): 2017.02.15, 04:06
Pirojog писал(а): 2017.02.15, 03:54
mat.twg писал(а): 2017.02.15, 03:51 Предполагаю, что в сторону $view... а по-большому счёту, если нужен свой html - наследуйте класс, переопределяйте рендр, как вам угодно.
Класс уже наследовал, дивы нормально рендерит. Вы никак не можете понять мою проблему. Давайте попроще попробуем:

Код: Выделить всё

<ul class="pag">
	<li class="prev"></li>
	<li">2</li>
	<li class="next"></li>
Вот такое можно сделать?
Можно
подскажите как?
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Кастомизация LinkPager::widget

Сообщение mat.twg »

$activePageCssClass=false
Ответить