Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Php 如何在CodeIgniter中加载基本模板_Php_Codeigniter_Templates - Fatal编程技术网

Php 如何在CodeIgniter中加载基本模板

Php 如何在CodeIgniter中加载基本模板,php,codeigniter,templates,Php,Codeigniter,Templates,我刚接触CI,我有一个问题。更像是一个设计方法的建议。我想为静态页面创建一个基本模板。基本上,我想加载文档类型、头和主体,但没有其他内容。我希望内容由我通过URL调用的任何类/函数加载。我知道我可以用HTML模板和str_replace()来实现这一点,但有没有更好的方法或一些我不熟悉的奇特的CI方法 这是我到目前为止所做的,它很有效,但不是最好的 class Sandbox extends CI_Controller { public function __construct() {

我刚接触CI,我有一个问题。更像是一个设计方法的建议。我想为静态页面创建一个基本模板。基本上,我想加载文档类型、头和主体,但没有其他内容。我希望内容由我通过URL调用的任何类/函数加载。我知道我可以用HTML模板和str_replace()来实现这一点,但有没有更好的方法或一些我不熟悉的奇特的CI方法

这是我到目前为止所做的,它很有效,但不是最好的

class Sandbox extends CI_Controller {

    public function __construct() {
        parent::__construct();
        //echo "hello world?"; 
    }

    public function load($what){
        if ($what == 'something'){

            if (!file_exists('application/views/content/'.$what.'.php')){
                // Whoops, we don't have a page for that!
                show_404();
            }
            $data = array();
            $this->load->view('templates/header', $data);
            $this->load->view('content/'.$what, $data);
            $this->load->view('templates/footer', $data);
        }
        else { // Default load

            $data = array();
            $data['message'] = 'Hello World';
            //$this->load->view('templates/header', $data);
            $this->load->view('content/sandbox', $data);
            //$this->load->view('templates/footer', $data);
        }
    }
}
当我加载view方法时,它似乎可以工作,但我必须将doctype和head添加到模板中。我更愿意单独加载这些文件,这样就不必创建多个标题。我要寻找的是一种专门加载页面部分以及给定页面所需的任何脚本/css的方法


谢谢您的建议。

控制器中的函数名是对url的引用,例如:

www.ci.com/sandbox/load
上面的url将在沙箱控制器中加载
函数load()

要创建模板,您只需创建一个包含所需基本内容的视图,然后将内容传递给该视图,例如:

function home(){
$data['content'] = $this->load->view('home_content',,TRUE);
this->load->view('template', $data)
}
通过在第三个参数中使用
TRUE
,您将返回数据,而不是显示数据

然后在模板文件中只
echo$content
您还可以使用相同的方法创建单独的头文件和其他文件以包含在模板中,即:

function home(){
$data['content'] = $this->load->view('home_content',,TRUE);
$data['head'] = $this->load->view('head',,TRUE);
this->load->view('template', $data);
}
您还可以将数据变量传递给要返回的视图,即:

$data['content'] = $this->load->view('home_content',,TRUE);
$data['admin_script'] = $this->load->view('admin_script',,TRUE);
$data['head'] = $this->load->view('head',$data,TRUE);
我希望这有帮助!:)

同时


如果要加载不同的页面,应为它们创建单独的函数并创建新的路由规则:

$data['content']=$this->load->view('home\u content',TRUE);返回是否包含html标记的数据?它将包含您在该文件中放置的所有内容。把它想象成你在使用
include
。谢谢,这很方便,我可以用它来做我想做的事情。我刚刚测试了:D