0

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

4

2 回答 2

1

您可以创建一个名为 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

于 2013-05-11T10:02:17.103 回答
0

它并不像只包含您想要的帮助程序/库的文件路径那么简单。如果我们使用 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 用户指南中的本教程特别有用。

于 2013-05-11T12:49:35.007 回答