php – CodeIgniter中一致的主题和内容
我正在使用CodeIgniter开发一个基本网站,以便更好地理解框架并改进我目前有限的网络开发技能.我一直在寻找和阅读相当多的文档,但没有找到我正在寻找的(或至少我不认为).
我的网站将具有一致的标题,导航和页脚.基本上,唯一会通过subnav改变的内容是页眉和页脚之间的一些文本和/或图像.这是一个非常典型的简单网站,但我想弄清楚如何在视图/控制器的上下文中处理它. 根据我在这种情况下的理解,您希望在视图中创建一个“主题”文件夹,其中包含随每个页面加载的“主”视图.我的印象是,由于能够在单个控制器中加载多个视图,我实际上只需要一个“主”控制器来加载“主”视图以及与导航关联的任何视图.例如,Nav:Home |关于|联系.我点击“关于”,然后通过适当的家庭控制器方法加载关于视图的主要内容. 这是我目前正在尝试采取的方法,但我想在尝试这个时我会得到一些反馈. 我不一定在寻找一步一步的教程,但更多的是接受或最常见的方法.非常感谢,如果这是在我面前盯着我的2个帖子,我会提前道歉. 谢谢 解决方法
因此,您需要确保了解路由,以确保所有内容都映射到URL的第一个段,因为您实际上只需要一个控制器.这是在一个名为routes.php的文件的application / config文件夹中
你会希望它设置如下: $route['(:any)'] = "home/$1"; $route['default_controller'] = "home"; 所以它匹配第一段中的任何(:any)并将其路由到home / $1(控制器/函数)……然后如果第一段中没有任何内容它将它映射到home /(隐含的索引函数) ).看看路径文件的文档,这样你就可以了解你可以用它做什么(你可以运行正则表达式,高级路由等),这一点非常重要. 这种方式在你的home.php控制器(controllers / home.php或你想要的任何调用它)中你可以拥有与你的url匹配的函数 在这种情况下,在其他帖子中提到的关于扩展基本控制器的内容并不是必需的.但是有一个功能可以为您查看加载是很好的 我喜欢做的是使用我的页眉,页脚,导航等创建一个包含文件夹.创建一个功能,只有这样…具有私人可访问性,如下所示: 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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |