10

在 Codeigniter 中,我们如何在加载视图后停止执行?

我试过这个

function index() {
    $this->load->view('myView');
    die();

    //do not execute next code
}

但它导致空白屏幕。

4

5 回答 5

15

https://www.codeigniter.com/user_guide/general/views.html

还有第三个可选参数可让您更改函数的行为,以便它以字符串形式返回数据,而不是将其发送到浏览器。如果您想以某种方式处理数据,这可能很有用。

echo $this->load->view('myView', '', TRUE);
    die();
于 2013-06-26T12:35:45.150 回答
14

我知道我迟到了,但我在寻找加载视图是否停止执行时遇到了这个问题,但显然它没有。

它可能对某人仍然有用......要在加载视图后停止执行,您可以返回:

$this->load->view('myView');
return;

这不会停止 PHP(与die()or不同exit()),CI 将像往常一样加载视图,并且任何以下代码都不会运行。

于 2014-11-16T15:53:13.043 回答
2

这是一个很好的问题。经过大量的谷歌搜索,我目前正在以这种方式抛出我的错误页面:

助手/X.php

function load_404_page_then_die($obj)
{
    $obj->output->set_status_header(404);
    load_page_with_great_races_sidebar($obj, 'errors/html/error_404_custom');
    send_view_then_die($obj);
}

function send_view_then_die($obj)
{
    // Force the CI engine to render the content generated until now    
    $obj->CI =& get_instance();
    $obj->CI->output->_display();

    die();
}

控制器/X.php

$data['volunteer'] = $this->volunteer_model->get_volunteer_by_id($volunteer_id_and_text) OR load_404_page_then_die($this);

另一种方法是在控制器的公共方法中使用“return”。但是,这会导致代码不能放在一行中,并且您不能在控制器的私有方法或帮助文件中使用此技术。

控制器/X.php

$data['volunteer'] = $this->volunteer_model->get_volunteer_by_id($volunteer_id_and_text);
if ( empty($data['volunteer']) )
{
    load_404_page($this);
    return;
}
于 2017-05-19T22:49:22.763 回答
1

您应该在控制器方法的末尾调用 load->view。如果您停止执行,则不会加载主题的其他部分。您的视图文件内容只会被呈现。您可以将此方法用于 ajax 调用,您不希望呈现任何其他内容,除了您想要呈现为 ajax 调用的输出。

于 2013-06-26T10:13:41.663 回答
0

AFAIK,您不能,因为 Codeigniter 在加载视图后必须运行其他脚本,例如 CI 需要display()从类中调用方法Output来呈现您的视图。在你的情况下(如果我没有误解的话),我建议你只在控制器的末尾加载你的视图。

于 2013-06-26T10:42:41.727 回答