在我的许多控制器中,我有大约9行代码。它们进入索引并用于检查用户是否已登录,已授予的访问级别以及获取某些会话变量。包含不完整功能的代码片段的最佳方法是什么?
片段不在所有控制器中,只是构建应用程序管理部分的控制器。
如果我可以使用一行代码来包含代码段,但我是CodeIgniter的新手并且我不想偏离最佳实践,那将会很棒。如果你能包括一个简短的例子,可以帮助我想象这个。谢谢!
答案 0 :(得分:1)
您想要创建基本CI控制器的扩展,并在那里进行检查。扩展核心在此处的文档中:http://ellislab.com/codeigniter/user_guide/general/creating_libraries.html向下滚动到Extending Native Libraries部分。
在您的新控制器中,您可以执行以下操作:
<?PHP
class MY_Controller extends CI_Controller
{
function __construct()
{
parent::__construct(); //Gets all the CI_Controller functions and makes them available to this controller.
if($this->session->userdata('is_logged_in')
{
$this->load->model('categories');
$this->categories=$this->categories->getAllCategories();
}
}
}
然后在你的其他控制器中使用MY_Controller而不是CI_Controller,如下所示:
<?php
class Pages extends MY_Controller {
显然你会有自己的检查和变量加载,但这应该给你一般的想法。在上面的示例中,我现在可以使用$ this-&gt;类别来检索已使用MY_Controller加载的应用程序中的任何类别。
答案 1 :(得分:0)
我正在使用'主'模板文件(views / template.php):
// views/template.php
<?php $this->load->view('includes/header'); ?>
<?php $this->load->view('includes/' . $main_content); ?>
<?php $this->load->view('includes/sidebar'); ?>
<?php $this->load->view('includes/footer'); ?>
所以视图目录结构是这样的:
--views
--includes
- header.php
- footer.php
- template.php
正如您在view/includes/
文件夹中看到的,我正在使用一些可重复使用的代码段,例如'header.php','footer.php'......
所以在控制器中我正在加载这个主模板文件:
class MyController extends CI_Controller {
public function index()
{
//...
$this->load->view('template',$data);
}
}
所以它加载'template.php'。
并且可以在header.php里面使用$data
,也可以使用footer.php ..
但你可以根据需要改变这一点,这只是一个“基本”的想法......