CodeIgniter - 包括代码部分?

时间:2012-11-17 13:36:34

标签: codeigniter include code-snippets

在我的许多控制器中,我有大约9行代码。它们进入索引并用于检查用户是否已登录,已授予的访问级别以及获取某些会话变量。包含不完整功能的代码片段的最佳方法是什么?

片段不在所有控制器中,只是构建应用程序管理部分的控制器。

如果我可以使用一行代码来包含代码段,但我是CodeIgniter的新手并且我不想偏离最佳实践,那将会很棒。如果你能包括一个简短的例子,可以帮助我想象这个。谢谢!

2 个答案:

答案 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 ..

但你可以根据需要改变这一点,这只是一个“基本”的想法......