我正在提交表单和提交页面。刷新页面时,它会要求重新发送数据。为了避免这种情况,我发现我必须实现PRG模式。任何人都可以帮我在CodeIgniter中实现相同的功能吗?
答案 0 :(得分: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 : "";
这将回显最后输入的密码(如果存在)。它不会在页面刷新时存在或从浏览器返回。