2010-09-01 1 views
2

Я использую redirect() (из помощника uri) в каждой функции, которым необходимо загрузить основной вид моего приложения. Он перенаправляется на ту же функцию. Моя цель - получить тот же чистый uri, даже когда я использую функцию страниц (которые вызывают другой контроллер). Это хорошая практика? Когда следует использовать redirect()? Есть ли другое решение для получения аналогичного результата?codeigniter использование redirect()

это код для уточнения.

Вот контроллер:

<?php 

    class Main_controller extends Controller 
    { 
     function index() 
     { 
     $this->load->view(page); 
     } 

     function page_feature() 
     { 
     /* some stuff */ 
     redirect('main_controller.php','refresh'); 
     } 
    } 

с этим маршрутом правил:

$route['([a-z-A-Z1-9_]+)'] = "main_controller"; 

Ури, как это: myapp.com/something На этой странице есть функция, называющий (on submit) другие функции main_controller (или другого контроллера), например, как форма:

<form action="myapp.com/another_controller/method" method="post"> 

в конце этого запроса «/ another_controller/method», я использую redirect ('main_controller') для отображения представления с новыми данными и сохраняю uri «myapp.com/something» вместо «myapp.com/another_controller»/метод».

Я хотел знать, хорошая ли это или плохая практика, и почему.

ответ

6

Неправильная практика использования таких переадресаций; вы в основном удваиваете количество запросов сервера.

Если вы не хотите иметь имена функций в URL-адресе, просто введите форму POST в функцию index() контроллера и вызовите нужную функцию на основе некоторых критериев, таких как то, что было передано из форм данные POST:

<form action="myapp.com/controller_name" method="post"> 

контроллер:

function index(){ 
     if(!empty($_POST['some_form_data'])){ 
      $this->page_feature(); 
     } 
     else{ 
      $this->load->view('page'); 
     } 
} 
function page_feature(){ 
     /* some stuff */ 
     $this->load->view('page_feature'); 
} 

Вы также можете проверить функцию _remap(). Таким образом, дополнительные сегменты uri не рассматриваются как вызовы функций.

+0

Спасибо, это то, что я искал. – Joeyjoejoe

1

Перенаправление является наиболее полезным для предотвращения повторной отправки данных формы. Если вы просто показываете свой вывод с того же URL-адреса, который вы отправляете, пользователи, обновляющие страницу, всегда получат приглашение с просьбой повторно отправить форму.

Перенаправление также влияет на производительность, заставляя клиента выполнять еще один запрос на сервер, но в большинстве случаев это, вероятно, незначительно.

 Смежные вопросы

  • Нет связанных вопросов^_^