我想将html标记声明为PHP变量的字符串值,并在Nav()
函数中返回该变量,该函数将把该变量放在MY_Model上,而我将把该值转移到Pages_Controller上的$menu变量中喜欢$this->data['munu'] = $this->MY_Model("nav");
,则我将回显此$menu变量以查看为<?PHP echo $menu; ?>
。所以我的意思是,我不会在视图中平面化或包装我的html标记,我已经在Nav()函数中包装了它。
所以我想问所有的朋友,这比在View文件夹中的一些文件中的html标签上包装$menu变量更快或更好吗?
这是我的简单代码
Class Pages extends CI_Controller{
$this->load->model("MY_Model");
$this->data['menu'] = $this->MY_Model->nav();
}
这是我的My_Model
Class MY_Model extends CI_Model{
Public function nav(){
$str ='<html><div><nav>Here is the wraper of html tage and PHP variable which retrieve value from Database </nav></div></html>';
return $str;
}
}
这是我的**页面。视图**中的PHP
<?PHP echo $menu; ?>
不是这里只是简单的代码,但我的网站中的代码正常工作,但我担心这种结构比在page.PHP的HTML标签上包装PHP变量更好?
请帮忙展示一些想法。
准则:
1)模型仅用于查询数据库、获取结果,仅此而已。
2)HTML标记不应该在控制器中(这不是一个好的做法)
3)在回答您的问题时,将HTML标记保留在Controllers中不会有任何区别(更快或更慢),但您将不会干扰代码
4)还有为什么我们使用MVC架构来保持HTML(视图)和DB查询(模型)的分离。你的方法根本不是面向MVC的。
这里有一个更好的方法,
控制器:
<?php
class Xyz extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('xyz_model');
}
public function abc()
{
$data['menu'] = $this->xyz_model->get_menus();
$this->load->view('xyz',$data);
}
}
型号:
<?php
class Xyz_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->db = $this->load->database('default',true);
}
public function get_menus
{
$query = $this->db->get('menus');
return $query->result();
}
}
视图:
<html>
<div id="menu">
<ul>
<?php foreach($menu as $m) { ?>
<li><?php echo $m->name; ?></li>
<?php } ?>
</ul>
</div>
</html>