Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果将HTML标记设置为PHP变量';s值和要查看的初始导演?_Php_Html_Codeigniter - Fatal编程技术网

如果将HTML标记设置为PHP变量';s值和要查看的初始导演?

如果将HTML标记设置为PHP变量';s值和要查看的初始导演?,php,html,codeigniter,Php,Html,Codeigniter,我想将html标记声明为字符串值,并将其放入PHP变量中,然后在Nav()函数中返回该变量,该函数将把该变量放入我的\u模型中,然后将该值转移到页面\u控制器上的$menu变量中 喜欢 $this->data['munu']=$this->MY_Model(“nav”)之后,我将回显此$menu变量以查看。所以我的意思是,我不会在视图上平面或包装我的html标记,因为我已经在Nav()函数中包装了它 所以我想问所有的朋友,它比在视图文件夹中的一些文件中的html标记上包装$menu变量更快或更好

我想将html标记声明为字符串值,并将其放入PHP变量中,然后在
Nav()
函数中返回该变量,该函数将把该变量放入我的\u模型中,然后将该值转移到页面\u控制器上的$menu变量中 喜欢
$this->data['munu']=$this->MY_Model(“nav”)
之后,我将回显此$menu变量以查看
。所以我的意思是,我不会在视图上平面或包装我的html标记,因为我已经在Nav()函数中包装了它

所以我想问所有的朋友,它比在视图文件夹中的一些文件中的html标记上包装$menu变量更快或更好

这是我的简单代码。

Class Pages extends CI_Controller{
       $this->load->model("MY_Model");
       $this->data['menu'] = $this->MY_Model->nav();
}
这是我的My_模型

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;
}
}
Class MY_模型扩展了CI_模型{
公共功能导航(){
$str='此处是html tage和PHP变量的包装器,用于从数据库中检索值';
返回$str;
}
}
这是我的**page.PHP**

<?PHP echo $menu; ?>

这里不只是简单的代码,但我的网站中的代码正常工作,但我担心这种结构比在HTML标签上包装PHP变量要好。PHP或不是,还是一样


请帮助展示一些想法。

指南:
1)模型仅用于查询数据库、获取结果,仅此而已。
2)HTML标记不应该在控制器中(这不是一个好的做法)。
3)回答您的问题,将HTML标记保留在控制器中不会有任何区别(更快或更慢),但最终会弄乱代码。
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>


  • 我会在我的模型中执行严格的最小值(查询+返回),将结果从控制器发送到我的视图(最终稍微返工)在我的视图中构建我的html标签。是的,我目前正在使用这种技术构建一些网站,但我想更改它,因为我想通过只传递php变量在我的视图上生成一个非常干净的html代码。但我担心它速度更快,或者技术不好,或者什么的。对不起,你说的“严格最小”是什么意思?它会严格我们,对吗?我说的“严格最小”是指我从不在我的模型中修改我的数据。模型仅用于执行查询和返回结果。其他一切都交给控制器。而且,你的技术没有错,也没有慢,它不是很“MVC友好”。如果有意识地尊重MVC结构,您的html将不会变得更混乱。相反,可维护性将提高,因为所有内容都将位于正确的位置并正确格式化。非常感谢您的评论,我将尝试更多内容,但我认为,尽管在控制器上或视图中保留html,但想法是一样的(快和慢)。但若继续使用控制器,则最好创建易于回显的快照代码。但我现在每天都在使用它,我还用file.php示例nav.php、slide.php.cat.php midl.php、header.php、footer.php将其分隔开来,然后将其加载到layout.php中。我不知道还有什么技术比这更好。你有什么新技术吗?没有比这更好的技术了。这很简单,让你的代码库更干净。好的,我会继续使用这个结构