Как реализовать шаблон Post-Redirect-Get в CodeIgniter

У меня есть форма и на странице представления. Когда я обновляю страницу, она запрашивает повторную отправку данных. Чтобы избежать этого, я обнаружил, что мне нужно реализовать шаблон PRG. Может кто-нибудь, пожалуйста, помогите мне реализовать то же самое в CodeIgniter?

1

Решение

Чтобы передать данные из функции обработки обратно в функцию просмотра, вам придется использовать сеансы. Пример предполагает Codeigniter v3.0.0 или выше. Если вы используете более раннюю версию, вам придется изменить настройки, получать и сбрасывать данные сеанса.

Вот очень простой контроллер

class TestPRG extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper('form');
$this->load->library('session');
}

public function index()
{
$data['name'] = $this->session->name;
$data['pw'] = $this->session->pw;
$this->load->view('test_form_v', $data);
unset($_SESSION['name'], $_SESSION['pw']);
}

public function process_form()
{
$_SESSION['name'] = $this->input->post('username');
$_SESSION['pw'] = $this->input->post('password');
redirect('testprg', 'location', 303);
}

}

Просмотр файла

<?php
echo form_open('testprg/process_form');
echo form_input('username', isset($name) ? $name : NULL);
echo form_password('password', "");
echo form_submit('Submit', 'Submit');
echo form_close();
echo isset($pw) ? $pw : "";

Это отобразит последний введенный пароль, если он существует. Это не будет существовать при обновлении страницы или вернуться из браузера.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]