重定向CI问题

时间:2010-06-03 11:17:27

标签: codeigniter codeigniter-url

我是CodeIgniter的新手,我还在学习(很多)。

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

    class Site extends Controller {

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

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

    }

现在当该动作完成时(删除行)我正在调用$ this-> index();重定向到我的初始页面(这是好的)但我的网址保持:站点/删除。我希望我的网址是../site/index(或没有/ index)

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

4 个答案:

答案 0 :(得分:2)

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

而不是:

$this->index();

我正在使用:

redirect('site');

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

答案 1 :(得分:0)

重定向是你应该使用的。

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

他们在检查用户是否已登录后使用它。根据他们是否有,他们会重定向到其他地方。

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

答案 2 :(得分:0)

我首选的方法是让这样的操作由用户随后看到的相同方法处理。

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

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

这样,如果用户刷新页面,或者按“后退”,事情应该与他们保持一致。

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

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

答案 3 :(得分:0)

$this->index();

函数中的函数调用只是执行该函数中的功能。 而网址从未改变过。

更改您应该使用的网址。

redirect ( base_url().'site');

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