php – CodeIgniter – 将一个额外的字符串重定向到另一个页面以输出为html的方法?
作者:互联网
我正在使用CodeIgniter并尝试在运行动作网址后重新定向到“状态更新”的控制器…我可以更好地解释这一点..所以我有一个管理页面“example.com/admin”和我在“/ admin / users”管理用户,当我删除用户时,它转到“* / admin / delete_user *”.我希望它将BACK重定向到“/ admin / users”并添加一个像$status_update这样的变量集,并带有成功或失败消息.
我怎么能收到回到另一个视图的消息?这是我的简化代码.
*我的完整代码实际上充满了安全措施,所以忽略它目前的缺乏.
class Admin extends CI_Controller {
public function index(){
$this->load->view('admin/admin');
}
public function users(){ // admin/users
$this->load->model('user_model');
$users = $this->user_model->get();
$this->load->view('admin/users', ['users' => $users]);
}
public function delete_user($user_id){ // admin/delete_user
$this->load->model('user_model');
if ($this->user_model->delete($user_id) == true){
$this->load->model('user_model');
$users = $this->user_model->get();
$this->load->view('admin/users', ['users' => $users]);
// I WANT THIS TO GO BACK TO "/admin/users" WITH THE STATEMENT BELOW
echo $user_id . ' has been deleted from the system';
} else {
echo 'Something went wrong trying to delete ' . $user_id;
}
}
}
我怎么能这样做?我可以看到这样的事情的唯一方法是将删除功能移动到用户功能并使用表单提交变量调用它,但我觉得可能有更好的方法.
我希望我的问题有道理.
更新
感谢tomexsans& saurabh2836我最后用一小部分来解决这个问题
我将实际调用移到了视图本身,因为从控制器向视图发送一个额外的数组并不顺利,但我也有一个小问题,闪存数据通过请求持续,然后通过第二个导致问题,我解决了以下问题
<?php if ($this->session->flashdata('message') !== null){
$_session_data = $this->session->flashdata('message');
$message = $_session_data['message'];
$status = $_session_data['status'];
if ($status == 'success'){
echo '<div class="alert-success"><strong>'.$message.'</strong></div>';
} elseif ($status == 'failed'){
echo '<div class="alert-danger"><strong>'.$message.'</strong></div>';
}
$this->session->unset_userdata('flash_message'); //this fixed data showing after another request.
} ?>
更新2
对于希望使用这种方法的未来用户,我发现了一个奇怪的偶然事件,如果你用标签发出请求它就不会像你想象的那样显示(我觉得它与浏览器缓存有关)所以要解决这个问题你必须通过表格打电话.这就是我实现方法的方法.
<form action="<?=site_url("admin/delete_user/{$_value->user_id}")?>" method="post">
<button type="submit">Delete</button>
</form>
我知道它与链接相比有点多,但我不想依赖Javascript来提交表单.有另一个想法?
解决方法:
你也可以做一个快捷方式
检查以上答案
在控制器中
$this-> session-> set_flashdata(‘message’,’< p>‘.$user_id.’已从系统中删除.$status< / p>);
在视图中
<?php if($this->session->flashdata('message')) echo $this->session->flashdata('message');?>
要使用此闪存数据超过一次,您可以使用
$this->session->keep_flashdata('item');
标签:http-redirect,php,codeigniter 来源: https://codeday.me/bug/20190831/1773396.html