У меня есть форма внизу длинной страницы, если пользователь заполняет форму, но не подтверждает, что страница перезагружается в обычном кодеригере:
$this->load->view('template',$data);
тем не менее, поскольку форма находится вниз в нижней части страницы, мне нужна страница для загрузки там, как это делается с помощью якорей HTML. Кто-нибудь знает, как это сделать в кодеригере?
Я не могу использовать codeigniter
redirect();
потому что он теряет объект, и ошибки проверки исчезли. Другие рамки, которые я использовал как Yii, вы можете вызвать функцию перенаправления, например:
$this->redirect();
который решает проблему, потому что вы храните объект. Я пробовал использовать:
$this->index()
в контроллере, который отлично работает в качестве перенаправления, но ошибки проверки в другом методе, в котором загружается текущая страница:
$this->item($labs)
но когда я использую это, он застревает в цикле
Есть идеи? Я много видел этот вопрос в сети, но не дал ясных ответов. Я изучаю использование flash-данных codeigniter, но думаю, что это немного перебор.
веселит.
Я не могу лично ручаться за это, но согласно этой теме, если вы добавите якорь в действие формы, он будет работать.
Помощник CodeIgniter:
<?php echo form_open('controller/function#anchor'); ?>
Или ванильный HTML:
<form method='post' action='controller/function#anchor'>
Если вы были открыты для использования Javascript, вы можете легко обнаружить переменную $validation_failed
и соответствующим образом прокрутить. Или, еще лучше, используйте AJAX.
Другой вариант – разместить форму в верхней части страницы?
Хорошо, насколько я понял вашу проблему, это не так сильно связано с задним концом (codeigniter). Вы хотите, чтобы форма внизу страницы была «what-users-sees-on-page-load» (поскольку вы упоминаете привязки).
Теперь, что вы можете сделать, вы можете установить разделители для сообщений об ошибках проверки, используя:
echo validation_errors('<div id="bottom_form_error">', '</div>');
Используя jQuery ScrollTo , выполните:
$( function() { $('#bottom_form_error').ScrollTo(); } );
И пользователь будет прокручиваться до ошибок в нижней части страницы. Не забудьте также включить jQuery.
Якорный хэш-фрагмент клика отличается – он прокручивается со скоростью ∞ .
Надеюсь, это то, что вы хотели.
PS Я игнорирую сказанное ниже этой строки:
Кто-нибудь знает, как это сделать в кодеригере?
поскольку я чувствовал, что это не имеет отношения к вопросу.