加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – CodeIgniter中一致的主题和内容

发布时间:2020-12-13 22:29:45 所属栏目:PHP教程 来源:网络整理
导读:我正在使用CodeIgniter开发一个基本网站,以便更好地理解框架并改进我目前有限的网络开发技能.我一直在寻找和阅读相当多的文档,但没有找到我正在寻找的(或至少我不认为). 我的网站将具有一致的标题,导航和页脚.基本上,唯一会通过subnav改变的内容是页眉和页脚
我正在使用CodeIgniter开发一个基本网站,以便更好地理解框架并改进我目前有限的网络开发技能.我一直在寻找和阅读相当多的文档,但没有找到我正在寻找的(或至少我不认为).

我的网站将具有一致的标题,导航和页脚.基本上,唯一会通过subnav改变的内容是页眉和页脚之间的一些文本和/或图像.这是一个非常典型的简单网站,但我想弄清楚如何在视图/控制器的上下文中处理它.

根据我在这种情况下的理解,您希望在视图中创建一个“主题”文件夹,其中包含随每个页面加载的“主”视图.我的印象是,由于能够在单个控制器中加载多个视图,我实际上只需要一个“主”控制器来加载“主”视图以及与导航关联的任何视图.例如,Nav:Home |关于|联系.我点击“关于”,然后通过适当的家庭控制器方法加载关于视图的主要内容.

这是我目前正在尝试采取的方法,但我想在尝试这个时我会得到一些反馈.

我不一定在寻找一步一步的教程,但更多的是接受或最常见的方法.非常感谢,如果这是在我面前盯着我的2个帖子,我会提前道歉.

谢谢
-Jay

解决方法

因此,您需要确保了解路由,以确保所有内容都映射到URL的第一个段,因为您实际上只需要一个控制器.这是在一个名为routes.php的文件的application / config文件夹中

你会希望它设置如下:

$route['(:any)'] = "home/$1";
$route['default_controller'] = "home";

所以它匹配第一段中的任何(:any)并将其路由到home / $1(控制器/函数)……然后如果第一段中没有任何内容它将它映射到home /(隐含的索引函数) ).看看路径文件的文档,这样你就可以了解你可以用它做什么(你可以运行正则表达式,高级路由等),这一点非常重要.

这种方式在你的home.php控制器(controllers / home.php或你想要的任何调用它)中你可以拥有与你的url匹配的函数

在这种情况下,在其他帖子中提到的关于扩展基本控制器的内容并不是必需的.但是有一个功能可以为您查看加载是很好的
这样您就不必为每个函数重复$this-> load-> view(header)和$this-> load-> view(footer)等.

我喜欢做的是使用我的页眉,页脚,导航等创建一个包含文件夹.创建一个功能,只有这样…具有私人可访问性,如下所示:

private function viewloader($view,$data) {
         $this->load->view('includes/header',$data);
         $this->load->view('includes/nav',$data);
      $this->load->view($view,$data);
         $this->load->view('includes/footer',$data); 
 }

…或者在函数之前使用codeigniter的内置下划线,使其无法通过URL访问

function _viewloader($view,$data); 
 }

然后你的每个页面的功能看起来像这样:

function about()
 {
  /* put any application logic here */
  $this->viewloader('about',$data);
        /* or $this->_viewloader('about',$data); 
           if you went with CI's style visibility */
 }

 function contact()
 {
  /* put any application logic here */
  $this->viewloader('contact',$data);
        /* or $this->_viewloader('contact',$data); 
           if you went with CI's style visibility */
 }

所以现在正如你所看到的那样,viewloader函数现在加载了header,nav的视图,无论是$view是什么,然后是一次性的页脚…非常好.

您还可以记住,可以在视图文件本身(嵌套视图)中加载您需要的任何视图,它们并不总是必须从控制器加载,尽管保持这种方式是好的,所以你不要如果要进行重大更改,必须编辑单个视图文件.

这是最后的样子:

<?php 
if (! defined('BASEPATH')) exit('No direct script access');

class home extends CI_Controller {

 //php 5 constructor
 function __construct() {
  parent::__construct();
 }

 function index() {
  $data['title'] = "Welcome To Our Site"  
  $this->viewloader('home',$data);
 }

 function contact() {
  $data['title'] = "Contact Us"
  $this->viewloader('contact',$data);
 }
 function about() {
  $data['title'] = "About Us"
  $this->viewloader('about',$data);
 }

 private function viewloader($view,$data) {
  $this->load->view('includes/header',$data);
  $this->load->view('includes/nav',$data);
  $this->load->view($view,$data);
  $this->load->view('includes/footer',$data);
 }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读