我正在开发一个拥有许多静态页面的网站。所以我只为动态页面创建了控制器(这可能是错误的练习)。将所有其他静态文件保存在根文件夹中。现在我想使用codeigniter的base_url()函数来处理位于根文件夹中的静态页面。但我不确定我是否正在做好练习。所以**请给我一个解决方案来管理codeigniter中的许多静态页面。 **
答案 0 :(得分: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,则会调用您的视图将是关于-us.php,http://your-site.com/contact您的视图将是contact.php < / p>
答案 1 :(得分: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的所有功能都可用于root中的其他文件需要花费大量的时间和精力。它还否定了框架提供的许多有用功能,以及鼓励的MVC设计模式。我建议使用控制器将静态页面加载为视图 - 您可能会从CodeIgniter的用户指南中找到this tutorial特别有用。