在 Codeigniter 中,我们如何在加载视图后停止执行?
我试过这个
function index() {
$this->load->view('myView');
die();
//do not execute next code
}
但它导致空白屏幕。
在 Codeigniter 中,我们如何在加载视图后停止执行?
我试过这个
function index() {
$this->load->view('myView');
die();
//do not execute next code
}
但它导致空白屏幕。
https://www.codeigniter.com/user_guide/general/views.html
还有第三个可选参数可让您更改函数的行为,以便它以字符串形式返回数据,而不是将其发送到浏览器。如果您想以某种方式处理数据,这可能很有用。
echo $this->load->view('myView', '', TRUE);
die();
我知道我迟到了,但我在寻找加载视图是否停止执行时遇到了这个问题,但显然它没有。
它可能对某人仍然有用......要在加载视图后停止执行,您可以返回:
$this->load->view('myView');
return;
这不会停止 PHP(与die()
or不同exit()
),CI 将像往常一样加载视图,并且任何以下代码都不会运行。
这是一个很好的问题。经过大量的谷歌搜索,我目前正在以这种方式抛出我的错误页面:
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();
}
$data['volunteer'] = $this->volunteer_model->get_volunteer_by_id($volunteer_id_and_text) OR load_404_page_then_die($this);
另一种方法是在控制器的公共方法中使用“return”。但是,这会导致代码不能放在一行中,并且您不能在控制器的私有方法或帮助文件中使用此技术。
$data['volunteer'] = $this->volunteer_model->get_volunteer_by_id($volunteer_id_and_text);
if ( empty($data['volunteer']) )
{
load_404_page($this);
return;
}
您应该在控制器方法的末尾调用 load->view。如果您停止执行,则不会加载主题的其他部分。您的视图文件内容只会被呈现。您可以将此方法用于 ajax 调用,您不希望呈现任何其他内容,除了您想要呈现为 ajax 调用的输出。
AFAIK,您不能,因为 Codeigniter 在加载视图后必须运行其他脚本,例如 CI 需要display()
从类中调用方法Output
来呈现您的视图。在你的情况下(如果我没有误解的话),我建议你只在控制器的末尾加载你的视图。