codeigniter 在调用$this->load->view()后停止执行

pkbketx9  于 2022-12-07  发布在  其他
关注(0)|答案(6)|浏览(161)

在Codeigniter中,如何在加载视图后停止执行?
我试过这个

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

    //do not execute next code
}

但却导致黑屏。

r6l8ljro

r6l8ljro1#

https://www.codeigniter.com/user_guide/general/views.html
还有第三个可选参数可以让你改变函数的行为,使它以字符串的形式返回数据,而不是将数据发送到浏览器。如果你想以某种方式处理数据,这会很有用。

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

dfty9e192#

我知道我迟到了,但我在搜索时遇到了这个问题,以找出加载视图是否会停止执行,但显然它不会。
它可能对某些人仍然有用,所以...要在加载视图后停止执行,只需返回:

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

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

11dmarpk

11dmarpk3#

这是一个很好的问题。经过大量的谷歌搜索,我现在把我的错误页面这样扔:

帮助程序/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;
}
piwo6bdm

piwo6bdm4#

你应该在控制器方法的最后调用load-〉view。如果你停止执行,主题的其他部分将不会被加载。你的视图文件内容将只被呈现。你可以使用这个方法来 AJAX ,你不希望任何其他东西应该被呈现,除了你想作为ajax调用的输出呈现的东西。

1aaf6o9v

1aaf6o9v5#

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

pgky5nke

pgky5nke6#

我知道我已经很晚了。但是这里有一个解决方案。它必须输出到_display。只是以防万一,如果任何新手面临同样的问题,那么这将是理想的,我觉得。

$this->load->view('myView');
$this->output->_display();
die;

相关问题