Навигация с помощью pjax. Скроллинг.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
valerii
Сообщения: 11
Зарегистрирован: 2017.10.07, 19:55

Навигация с помощью pjax. Скроллинг.

Сообщение valerii »

Сделал сайт с pjax-навигацией и столкнулся с проблемой проскролленных вверх страниц. Добавил опцию

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

<?php Pjax::begin(['scrollTo' => 0]) ?>

Все стало на свои места за одним исключением: в одном из представлений есть форма, и при сабмите эта страница прыгает вверх. Можно ли это как-нибудь пофиксить не используя обычный рендеринг для этого представления?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Навигация с помощью pjax. Скроллинг.

Сообщение urichalex »

На форму добавить атрибут data-pjax="1"
valerii
Сообщения: 11
Зарегистрирован: 2017.10.07, 19:55

Re: Навигация с помощью pjax. Скроллинг.

Сообщение valerii »

urichalex писал(а): 2018.02.06, 21:40 На форму добавить атрибут data-pjax="1"
Добавил, к сожалению, ничего не изменилось.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Навигация с помощью pjax. Скроллинг.

Сообщение urichalex »

При отправке формы страница обновляется или просто скролл происходит?
Покажи код
valerii
Сообщения: 11
Зарегистрирован: 2017.10.07, 19:55

Re: Навигация с помощью pjax. Скроллинг.

Сообщение valerii »

Страница не обновляется. Форма работает.
Шаблон:

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

<?php Pjax::begin(['scrollTo' => 0]) ?>

    <a class="menuBtn" href="#"><?= t('Меню') ?></a>

    <nav class="navigation" role="navigation">
        <ul class="navigation__inner">
            <li class="navigation__item">
                <a class="navigation__link" href="<?= Url::to(['site/index']) ?>"><?= t('Главная') ?></a>
            </li>
            <li class="navigation__item">
                <a class="navigation__link" href="<?= Url::to(['brand/index']) ?>"><?= t('Бренды') ?></a>
            </li>
           
            <li class="navigation__item">
                <a class="navigation__link" href="<?= Url::to(['site/contact']) ?>"><?= t('Контакты') ?></a>
            </li>

        </ul>
    </nav>

    <main class="main" role="main">

        <?= $content ?>

    </main>

    <?php Pjax::end() ?>
Представление:

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

<section class="subscription">
    <div class="container">
        <div class="subscription__inner">
          
                <?php if(!Yii::$app->session->getFlash('success')): ?>

                    <p class="subscription__direction">
                        <?= t('Желаете получить извещение на свой E-mail?') ?>
                    </p>

                    <div class="subscription__form">
                        <?php $form = ActiveForm::begin(['id' => 'subscription-form', 'options' => ['data-pjax' => 1, 'class' => 'subscription__form-inner']]); ?>

                        <?= $form->field($model, 'email', [
                            'errorOptions' => ['class' => 'subscription__form-help'],
                            'options' => ['class' => 'subscription__form-group'],
                            'inputOptions' => ['placeholder' => $model->getAttributeLabel('email'), 'class' => 'subscription__form-control']
                        ])->label(false); ?>

                        <div class="subscription__form-group">
                            <?= Html::submitButton(t('Отправить'), ['class' => 'subscription__form-btn', 'name' => 'subscription-button']) ?>
                        </div>

                        <?php ActiveForm::end(); ?>
                    </div>

                <?php else: ?>

                    <div class="subscription__confirmation">
                        <?= Yii::$app->session->getFlash('success'); ?>
                    </div>

                <?php endif; ?>
        </div>
    </div>
</section>

Ответить