Проблема перенаправления CI - PullRequest
0 голосов
/ 03 июня 2010

Я немного знаком с CodeIgniter и все еще учусь (много).

Итак, у меня есть представление, и когда я отправляю форму, я «вызываю» контроллер, динамически переключаясь по нужному URL, например, сайт / удалить

    class Site extends Controller {

    function index(){$this->load->view('...')}

    function delete() {
        $this->site_model->delete_row();
        $this->index();
    }

    }

Теперь, когда это действие выполнено (удалена строка), я вызываю $ this-> index (); перенаправить на мою начальную страницу (что хорошо), но мой URL остается: сайт / удалить. Я хочу, чтобы мой URL был ../site/index (или без / index)

Буду признателен за любую помощь :-).

Ответы [ 4 ]

2 голосов
/ 03 июня 2010

Пока я нашел что-то, чтобы решить это:

вместо:

$this->index();

Я использую:

redirect('site');

Кто-нибудь знает, что это хорошая практика?

0 голосов
/ 05 августа 2014
$this->index();

Вызов функции в функции просто выполняет функциональность в этой функции. И URL никогда не менялся.

для изменения URL, который вы должны использовать.

redirect ( base_url().'site');

но вы должны загрузить помощник по URL в конструкторе.

0 голосов
/ 04 июня 2010

Мой предпочтительный метод состоит в том, чтобы такие действия обрабатывались тем же методом, который впоследствии будет виден пользователю.

Что если вы зайдете в / site / delete впоследствии как пользователь? Он должен будет либо обнаружить и выдать ошибку (показать сообщение), либо перенаправить на соответствующую страницу. / site / delete не имеет значения.

Например, если пользователь обычно видит обзор после удаления, тогда моя форма будет размещена в / site / index; index быстро проверяет состояние и вызывает _delete() в том же контроллере, прежде чем выполнять свою обычную работу.

Таким образом, если пользователь обновляет страницу или нажимает «назад», все должно выглядеть согласованно.

Другим примером может быть то, что / settings / edit будет публиковать для себя - это означает, что он может воздействовать на сообщение и показывать любой вывод (например, ошибки проверки). Это означает, что на моем сайте нет местоположения /settings/do_edit, а также означает, что пользователь может безопасно вернуться к /settings/edit и просмотреть форму для редактирования своих настроек.

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

0 голосов
/ 03 июня 2010

Redirect - это то, что вы должны использовать.

В руководстве пользователя: http://codeigniter.com/user_guide/helpers/url_helper.html

они используют его после проверки, вошел ли пользователь в систему. В зависимости от того, если они есть, они перенаправляют в другое место.

Также обратите внимание, что любой код после перенаправления не будет работать. Убедитесь, что вы перенаправили все, что вам нужно.

...