如何在codeigniter中加载视图

时间:2014-12-23 05:22:55

标签: php html codeigniter

我根据网站结构的要求将我网站的html切成多个文件,并将它们全部保存为codeigniter的views文件夹中的视图。

我从公共控制器加载相同的内容:

$this->load->view($this->config->item('templates_path') . 'header', $this->data);
$this->load->view($this->config->item('templates_path') . 'navbar', $this->data);
$this->load->view($this->config->item('templates_path') . 'main-container', $this->data);
$this->load->view($this->config->item('templates_path') . $sidebar, $this->data);
$this->load->view($this->config->item('templates_path') . 'main-content', $this->data);
$this->load->view($this->config->item('templates_path') . 'breadcrumb', $this->data);
$this->load->view($this->config->item('templates_path') . 'page-content', $this->data);
$this->load->view($this->config->item('templates_path') . 'main-content-end', $this->data);
$this->load->view($this->config->item('templates_path') . 'footer');
$this->load->view($this->config->item('templates_path') . 'main-container-end', $this->data); 
$this->load->view($this->config->item('templates_path') . 'bottom');

上面的一些视图文件在文件中只有很少的HTML标签,如: 查看文件

$this->load->view($this->config->item('templates_path') . 'main-content-end', $this->data);

只有

</div><!-- /.main-container --> 

在codeigniter中有一种方法可以直接加载html部分而不将其创建为新的视图文件吗?

4 个答案:

答案 0 :(得分:0)

在您的Views目录中创建一个文件夹,并将其称为“包含”或任何您想要的内容。
然后,您可以使用以下PHP在其他视图中包含这些HTML模板:

include('/path/to/include/file-to-include.php');


评论:
•文件的路径应该相对于视图文件
•包含的文件不必是.php文件,如果您愿意,它可以是HTML文件(或者如果您愿意,它可以包含PHP代码)
•我在本地安装的codeigniter中对此进行了测试,并按预期工作

答案 1 :(得分:0)

据我所知,创建一个视图&#39;文件&#39;是必需的,必须创建并包含html或php文件,load->view部分只为你做,它就像包含一样,只有它会引入一些CI逻辑。

我通常为我的网站做的是创建一个函数my_Controller,名为&#39; mainTemplate&#39;,(名称可以变化)

function mainTemplate($views = null, $data)
{
$this->load->view('header',$data);
$this->load->view('breadcrumbs',$data);

//now some logic, if we have a string for a view, we just load the string
if(is_string($views)
$this->load->view($views,$data)

//if it's an array of views, we just iterate over the array and show each view
foreach ($views as $view)
{
    $this->load->view($view,$data);
}  
 //and now the footer
  $this->load->view('footer',$data);  
}

现在您可以在控制器内部调用类似的内容:

$this->mainTemplate('pageContent',$data);

您可以为每个模板创建一个新功能,并包含每个模板所需的视图。所以我有一个登录模板,一个主页面模板,一个产品模板等。

希望它更接近你的要求。

答案 2 :(得分:0)

首先创建一个视图文件,如果是codeigniter,则将其存储在views文件夹中。 用于加载视图文件的语法

$this->load->view('filenane');

文件名不需要具有扩展名。 有关详细信息,请选择codeigniter

答案 3 :(得分:0)

在您的视图方面进行完整设计,然后使用以下代码加载您的视图

$this->load->view('filenane');

不要在文件名中使用扩展来加载你的视图只使用你的文件名。