我有一个php应用程序在Codeigniter。model.php, controller.php和view.php三个页面
model.php
<?php
class Activity_insert extends CI_Model {
public function activity()
{
echo "it works";
}
}
?>
controller.php
public function viewemp($q = NULL)
{
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->model('activity_insert');
$data['activity_log'] = $this->activity_insert->activity();
$this->load->view('header');
$this->load->view('sidebar');
$this->load->view('success',$data);
$this->load->view('footer');
}
view.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>GATT</title>
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
</div>
</body>
</html>
在编译我的视图页面后,如下所示
it works <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>GATT</title>
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
</div>
</body>
</html>
数据在页面开始处到达。如果我没有调用$activity_log在view.php的任何地方它仍然显示相同的文本"它的工作"在页面的开始。请帮忙解决
In Model make this
echo "it works";
return "it works";
当你的函数满足
echo
时,它将在它们满足时将值打印到浏览器。没有数据会通过函数返回。但是如果您使用return
,它将通过回调函数返回数据。所以你可以在需要的地方使用这个值。
PHP echo和PHP return的区别是什么?
echo
命令在调用时打印文本。所以,你应该只在需要向用户显示一些文本时调用它。这通常会在视图中发生。
现在,当您希望将一些文本返回到函数并在稍后使用它时,您应该使用return
而不是echo并将其存储在某个变量中以供以后使用。在您的例子中,在模型中应该有
public function activity()
{
return "it works";
}
因此,当您调用$data['activity_log'] = $this->activity_insert->activity()
时,活动函数返回的数据将被分配给$data['activity_log']
变量。如果您不返回任何内容,但像现在一样执行echo,则将在加载视图之前打印字符串(这就是它出现在html开头的原因),并且由于该函数不返回任何内容,因此$data['activity_log']
变量将为空。