在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()
或exit()
不同),CI将像正常情况一样加载视图,并且不会运行任何后续代码。
这是一个很好的问题。经过大量的谷歌搜索,我目前正在以这种方式抛出我的错误页面:
helpers/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;
}
您应该在控制器方法的末尾调用load->view。如果停止执行,则不会加载主题的其他部分。视图文件内容将仅被渲染。您可以将此方法用于ajax调用,在这些调用中,您不希望呈现任何其他内容,除非您希望呈现为ajax调用的输出。
AFAIK,您不能,因为Codeigniter必须在加载视图后运行其他脚本,例如CI需要从Output
类调用display()
方法来渲染视图。在你的情况下(如果我没有误解的话),我建议你在控制器的末尾加载你的视图。
我知道我很晚了。但这是解决方案。则必须将其输出到display。万一任何一个新手遇到同样的问题,我觉得这将是理想的选择。
$this->load->view('myView');
$this->output->_display();
die;