Вопрос

У меня есть интерфейс / платежный интерфейс, где пользователь должен иметь возможность фильтровать через ценовой диапазон, банк и другие вещи. Эти фильтры являются стандартными выборами коробками. Когда я отправляю форму фильтра, все данные пост отправляются в другой метод, называемый платежами / поиска. Этот метод выполняет проверку, сохраняет значения пост в сеанс FlashData и перенаправляет пользователя обратно / платежи, проходящие имя FlashData через URL.

Таким образом, мои стандартные ссылки на пагинацию без фильтров точно так:

payments/index/20/
payments/index/40/
payments/index/60/

И если вы отправите форму фильтра, возвратный URL:

payments/index/0/b48c7cbd5489129a337b0a24f830fd93

Это работает просто здорово. Если я изменим нулю для чего-то другого, он наносит paginates просто хорошо. Однако единственная проблема заключается в том, что ссылки на страницу << 1 2 3 4 >> не будут сохранять хэш после смещения пагинации. Codeigniter генерирует ссылки страницы, игнорируя этот дополнительный сегмент URI.

My Uri_Seggent Config уже установлен на 3:

$config['uri_segment'] = 3;

Я не могу установить URI_SEGEGEGE в 4, потому что это хэш может или не может существовать. Любые идеи того, как я могу решить это? Это обязательно для CI иметь смещение как последний сегмент в URI? Может быть, я пробую неверный подход, поэтому я все уши.

Спасибо, люди.

Редактировать: почему я пропускаю имя FlashData через URI, вы можете спросить? Поскольку он позволяет пользователю открывать несколько вкладок браузера и выполнять разные поиски на каждой вкладке. Для каждой фильтрации вы выполняете, создается новые FlashData VAR.

Это было полезно?

Решение

Просто для пользователей, приходящих из Google, вот решение:

В массиве конфигурации Pagination я изменил свою base_url для этого:

$config['base_url'] = site_url('payments/index/' . $this->uri->segment(3) . '/' . $this->uri->segment(4));

Где сегмент (3) - мой номер смещения и сегмент (4) - это хэш. Таким образом, в этом случае хеш может или не существует, и пагинация все равно будет работать.

Другой подход может быть это: если вы перейдете к платежам, и в URL нет идентификатора FlashData, он перенаправляет пользователь на платежи / поиск и создать пустой массив с пустыми фильтрами. Затем он перенаправляет обратно к платежам / _New_flashdata_id_here_. Таким образом, URL-адрес всегда будет иметь идентификатор Flashdata в URL, и вы можете иметь смещение на пагинацию в последнем сегменте URI как обычно.

Другие советы

Почему бы не установить хеш как элемент сеанса?

$this->session->set_userdata('session_flashdata_hash', $hash);

Хеш тогда будет доступен, пока вы не будете

$this->session->unset_userdata('session_flashdata_hash');

Или пока вы не уничтожите сессию.

$this->session->sess_destroy();

Почему вы не проверяете, существует ли хэш и установить uri_segment На основании этого?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top