0

我接手了一个用 CodeIgniter 编写的项目,这是我以前从未使用过的。我已经在视图/页面中添加了一个名为 features.php 的新文件,并且在互联网上阅读到要使其可访问,我需要在控制器文件中创建一个函数来呈现页面。

我尝试了以下方法:

public function features()
{
    $this->render('template', 'pages/features');
}

但是,当我尝试打开 features.php 时,它给了我 404。我该如何解决这个问题?

更新 1 - 类

这是控制器的类代码:

class Pages extends MY_Controller {

function __construct()
{
    parent::__construct();
    $this->load->model('setting_model', 'setting');
    $this->load->model('order_model', 'order');
    $this->load->model('page_model', 'page');
    $this->load->library('form_validation');
    $this->load->helper(array('inflector', 'string'));
}

public function index()
{
    $settings = $this->setting->get_settings();
    $data['document_price'] = $settings->document_price;
    $this->render('template', 'pages/index', $data); 
}

    //This works fine
public function about_us()
{
    $this->render('template', 'pages/about_us');
}

    //Here is the problem, although it follows the same pattern as about_us()
public function features()
{
    $this->render('template', 'pages/features');
}



}
4

2 回答 2

2

当您使用 $this->render 时,我猜您正在使用模板库。我认为你应该使用:

public function features()
{
   $this->template->set_template('template');
   $this->template->write_view('pages/features');    
   $this->template->render();
}
于 2012-09-03T21:16:10.963 回答
2

/views无法通过键入某些 URL 直接访问其中包含的 php 文件。CodeIgniter 是一个 MVC 框架。这意味着您的 URL 被映射到您的控制器并且控制器调用视图。

封装这个函数的类的名称是什么?请发布整个课程,而不仅仅是features()功能,我们可以为您提供帮助。如果您在本地工作,调用控制器的默认映射是:http://localhost/appname/controller/function/param1/param2/etc.

$this->render()函数不是普通的 CodeIgniter 语法,您要么继承了使用模板库的项目,要么render()控制器类中有兄弟函数。

还要检查您的config/routes.php文件并考虑发布它。

如果您想诊断问题,请尝试通过删除对 CodeIgniter 的调用$this->render()并改用 CodeIgniter 的本机$this->load->view('pages/features')函数来进行精确定位。如果这可行,我们可以确定它是库或render()调用。

于 2012-09-03T21:47:37.287 回答