致电$ this-> load-> view()后停止执行

时间:2013-06-26 10:06:12

标签: php codeigniter

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

我试过这个

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

    //do not execute next code
}

但导致空白屏幕。

5 个答案:

答案 0 :(得分:11)

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

  

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

echo $this->load->view('myView', '', TRUE);
    die();

答案 1 :(得分:9)

我知道我已经迟到但是我在搜索时发现是否加载视图是否会停止执行,但显然它没有。

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

助手/ 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;
}

答案 4 :(得分:0)

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