在 Codeigniter 中查看之前加载模型
Posted
技术标签:
【中文标题】在 Codeigniter 中查看之前加载模型【英文标题】:Model gets loaded before view in Codeigniter 【发布时间】:2013-10-06 05:16:00 【问题描述】:我在 codeigniter pages.php 中有一个控制器
class Pages extends CI_Controller
public function view($page = 'home')
$this->load->view('header');
echo("<br>");
$this->load->model("math");
echo $this->math->add(1,2);
模型:math.php
class math extends CI_Controller
public function add($val1,$val2)
return $val1+$val2;
视图:header.php
<html>
<head>
<title>fashion and style</title>
</head>
<body>
<?php
echo("this is the header");
?>
根据控制器,代码应输出:
this is the header
number
但我得到如下输出:
number this is the header
为什么?
【问题讨论】:
类数学扩展 CI_Controller ==> CI_Model 是拼写错误!!只是想知道... 嗯,你在控制器或模型中回显的任何内容都会出现在任何视图之前,因为视图在 index.php 中呈现并在最后一步中显示。 @GauravMehra 怎么说呢,文档里有吗,请分享链接 CodeIgniter view loading not loading in order? 的可能重复项 【参考方案1】:如果您将直接从 codeignitor 控制器回显字符串,它将在渲染加载的视图之前渲染字符串。如果你想这样做,你可以试试like-
$str = $this->math->add(1,2);
$this->output->append_output($str);
然后你的控制器看起来像-
class Pages extends CI_Controller
public function view($page = 'home')
$this->load->view('header');
$this->load->model("math");
$str = "<br>".$this->math->add(1,2);
$this->output->append_output($str);
希望这会有所帮助。
【讨论】:
【参考方案2】:试试这个:
控制器:
class Pages extends CI_Controller
public function view($page = 'home')
$this->load->model("math_model");
$data['number'] = $this->math_model->add(1,2);
$this->load->view('header',$data);
模型 math_model.php
型号:
class Math_model extends CI_Model
public function add($val1,$val2)
return $val1+$val2;
视图 header.php
<html>
<head>
<title>fashion and style</title>
</head>
<body>
<?php
echo("this is the header");
?>
echo("<br>");
<?php
echo $number;
?>
</body>
</html>
型号详情请看这里https://www.codeigniter.com/user_guide/general/models.html
查看这里https://www.codeigniter.com/user_guide/general/views.html
【讨论】:
您似乎也错过了文档的关键部分:“类名的第一个字母必须大写” 不,不是这部分,答案在于@gauravmehra 的评论(第二条评论) 视图被缓冲。当您直接在控制器中回显某些内容时,它会在刷新缓冲区之前发送(因此在包含视图的输出发送到浏览器之前),这就是它出现在任何内容之前的原因。您不应该这样做(发送直接输出/在视图之外回显某些内容),一旦您使用与标头相关的任何内容(重定向、cookie、CI 会话......),您就有陷入麻烦的风险。以上是关于在 Codeigniter 中查看之前加载模型的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter CSS、JS 和图像未加载,可能假定为目录