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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – CodeIgniter中一致的主题和内容脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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);
 }

}

脚本宝典总结

以上是脚本宝典为你收集整理的php – CodeIgniter中一致的主题和内容全部内容,希望文章能够帮你解决php – CodeIgniter中一致的主题和内容所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。