0

我对 CodeIgniter 有点陌生,而且我还在学习(很多)。

所以我有一个视图,当我提交表单时,我通过动态浏览正确的 URL 来“调用”控制器,例如站点/删除

    class Site extends Controller {

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

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

    }

现在,当该操作完成(删除该行)时,我正在调用 $this->index(); 重定向到我的初始页面(这很好),但我的网址仍然存在: site/delete 。我希望我的 URL 是 ../site/index(或没有 /index)

任何帮助,将不胜感激 :-) 。

4

4 回答 4

2

到目前为止,我找到了解决这个问题的方法:

代替:

$this->index();

我正在使用:

redirect('site');

有谁知道这是一个好习惯?

于 2010-06-03T11:56:10.877 回答
0

重定向是您应该使用的。

在用户指南中: http ://codeigniter.com/user_guide/helpers/url_helper.html

他们在检查用户是否登录后使用它。根据他们是否登录,他们重定向到不同的地方。

另外,请注意重定向后的任何代码都不会运行。确保在完成所需的一切后重定向。

于 2010-06-03T13:26:38.967 回答
0

我首选的方法是让类似的操作由用户之后看到的相同方法处理。

如果您之后以用户身份访问 /site/delete 会怎样?它要么必须检测并抛出错误(显示消息),要么重定向到适当的页面。/site/delete 没有任何意义。

例如,如果用户在删除后通常会看到概览,那么我的表单将发布到 /site/index;在进行正常工作之前,快速检查条件并调用同一个控制器index_delete()

这样,如果用户刷新页面,或者按下“返回”,事情应该看起来一致。

另一个例子是 /settings/edit 会发布给自己——这意味着它可以对发布进行操作并显示任何输出(例如验证错误)。这意味着我的站点上没有/settings/do_edit位置,也意味着用户可以/settings/edit安全返回,并查看用于编辑其设置的表单。

我想这是对一个可能是客观问题的主观看法,我鼓励对我的观点提出反馈,但这是我避免你所问问题的方式。

于 2010-06-04T11:55:49.537 回答
0
$this->index();

函数中的函数调用只是执行该函数中的功能。并且 url 从未改变。

更改您应该使用的网址。

redirect ( base_url().'site');

但是你应该在构造函数中加载 url helper。

于 2014-08-05T08:33:57.423 回答