codeigniter использование redirect () - PullRequest
2 голосов
/ 01 сентября 2010

Я использую redirect () (от uri helper) в каждой функции, которой нужно загрузить основной вид моего приложения.Это перенаправить на ту же функцию.Моя цель - получить такой же чистый URI, даже когда я использую функцию страниц (которая вызывает другой контроллер).Это хорошая практика?Когда я должен использовать 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";

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 02 сентября 2010

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

Если вы не хотите, чтобы имена функций были в 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 не рассматриваются как вызовы функций.

1 голос
/ 01 сентября 2010

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

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

...