создание обратных ссылок на страницы в Codeigniter

У меня есть страница с URL http: // arslan / admin / category / index / 0 / name / asc / 10 в Codeigniter. В этом URL- uri_segment начинается с 0 . Это ( 0 ) – значение поиска по умолчанию, name и asc – это поле и порядок сортировки по умолчанию, а 10 – индекс разбивки на страницы.

Теперь, если я перейду на страницу добавления с URL-адресом (http: // arslan / admin / category / add /), аналогично выше, добавьте текущую функцию.

Теперь, если я хочу вернуться через ссылку на обратную страницу … Как я могу отвлечь пользователя? Я не могу вернуть URL-адрес.

Может кто-нибудь мне помочь?

Я не уверен, правильно ли я понял вопрос, если не проигнорировать мой ответ, но я думаю, что вам нужна ссылка на «вернуться на предыдущую страницу», аналогичную обратной кнопке в веб-браузере.

Если это так, вы можете использовать javascript для решения этой проблемы, просто используя эту строку:

 <a href="javascript:window.history.go(-1);">Go back</a> 

Я расширяю класс сеанса, создавая /application/libaries/MY_Session.php

 class MY_Session extends CI_Session { function __construct() { parent::__construct(); $this->tracker(); } function tracker() { $this->CI->load->helper('url'); $tracker =& $this->userdata('_tracker'); if( !IS_AJAX ) { $tracker[] = array( 'uri' => $this->CI->uri->uri_string(), 'ruri' => $this->CI->uri->ruri_string(), 'timestamp' => time() ); } $this->set_userdata( '_tracker', $tracker ); } function last_page( $offset = 0, $key = 'uri' ) { if( !( $history = $this->userdata('_tracker') ) ) { return $this->config->item('base_url'); } $history = array_reverse($history); if( isset( $history[$offset][$key] ) ) { return $history[$offset][$key]; } else { return $this->config->item('base_url'); } } } 

А затем, чтобы получить URL-адрес последней посещенной вами страницы

 $this->session->last_page(); 

И вы можете увеличить смещение и тип возвращаемой информации и т. Д.

 $this->session->last_page(1); // page before last $this->session->last_page(2); // 3 pages ago 

Функция не добавляет страницы, называемые с помощью Ajax, в трекер, но вы можете легко удалить бит if( !IS_AJAX ) чтобы сделать это.

Изменить: если вы запустили ошибку Undefined constant IS_AJAX, предположим, что IS_AJAX добавьте строку ниже в /application/config/constants.php

 define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 

Есть два способа решить вашу проблему: сначала вы можете поместить ссылку, использующую back-function javascript onclick, вот так …

 <a href="javascript:history.back()">go back</a> 

… или вы всегда сохраняете текущий полный URL-адрес страницы в файл cookie и используете его для создания обратной ссылки – помощник может выглядеть так (не проверен) …

 /** * save url to cookie */ if(!function_exists('urlhistory_save')) { function urlhistory_save() { $CI =& get_instance(); $CI->load->library('session'); $array = array( 'oldUrl' = $CI->session->userdata('newurl'), 'newurl' = $CI->uri->uri_string() ); $CI->session->set_userdata($array); } } /** * get old url from cookie */ if(!function_exists('urlhistory_get')) { function urlhistory_get() { $CI =& get_instance(); $CI->load->library('session'); return $CI->session->userdata('oldurl'); } } 

В вашем контроллере вы бы использовали urlhistory_save (), чтобы сохранить текущий URL-адрес, и в представлении, которое вы могли бы использовать urlhistory_get (), чтобы восстановить старый адрес следующим образом:

 <a href="<?php echo base_url().urlhistory_get(); ?>go back</a> 

Самый простой способ перенаправления на предыдущую страницу, попробуйте это для меня.

  redirect($this->agent->referrer()); 

вам нужно также импортировать библиотеку user_agent $this->load->library('user_agent');

Вы можете создать сеанс для перехода на обратную страницу как:

 $this->session->set_userdata('ses_back_jobs','controller name'.array_pop(explode('controller name',$this->input->server('REQUEST_URI'),2))); //Back page 

Тогда, если вы хотите перенаправить на какую-то страницу, используйте его:

 redirect($this->session->userdata('ses_back_jobs')); 

или использовать его на якоре.