包括所有的编码器函数到一个新的静态页面(php文件),它位于根文件夹


Include all codeigniter functions to a new static page(php file) which is located in root folder

我正在开发一个拥有许多静态页面的网站。所以我只为动态页面创建了控制器(这可能是错误的做法)。将所有其他静态文件保存在根文件夹中。现在我想使用base_url()函数从codeigniter的静态页面位于根文件夹。但我不确定我是否在做好的练习。所以**请给我一个解决方案来管理许多静态页面的编码器。* *

您可以创建一个名为Static_page的控制器,将所有静态页面请求发送到该控制器

静态控制器

class Static_Page extends CI_Controller{

    function index(){
       $page = $this->uri->segment(1,'default_static_page');
       if (!file_exists(APPPATH."views/{$page}.php"))
         {
           show_404();
         } 
       $this->load->view($page);
   }
}

将所有静态页面保存为与uri名称相同的视图,例如,如果调用http://your-site.com/about-us,视图将是about-us.php, http://your-site.com/contact,视图将是contact.php

这并不像将文件路径包含到所需的helper/库那么简单。如果我们使用URL Helper作为示例,您将注意到在文件的顶部,这一行:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

这意味着如果没有定义BASEPATH,您将无法访问该文件。假设在根目录中有一个静态页面,称为my_static_page.php。您可以定义BASEPATH并包含该文件,如下所示:

define('BASEPATH',true);
require_once 'system/helpers/url_helper.php';

这将允许您访问脚本,但这并不一定意味着所有的函数都可以工作。例如,anchor函数可以工作,但base_url不能。某些函数可能具有某些依赖关系,需要CodeIgniter的其他组件的功能。

通过直接访问项目根目录下的文件,您可以有效地绕过CodeIgniter的index.php文件。该文件将确保所有必需的路径都已设置,基类已实例化,全局函数可用等。CodeIgniter的加载函数($this->load->helper('url');)也不会在此场景中使用,它将加载/提供对CI实例的访问,您可以在base_url函数中看到这一点:

function base_url($uri = '')
{
    $CI =& get_instance();
    return $CI->config->base_url($uri);
}

简而言之,要确保所有CodeIgniter的功能对根目录中的其他文件可用,需要花费相当多的时间和精力。它还否定了框架提供的许多有用特性,以及鼓励使用的MVC设计模式。我建议将静态页面加载为视图,使用控制器-您可能会发现CodeIgniter用户指南中的这个教程特别有用。