Codeigniter前端控制器不使用库

时间:2017-11-30 15:50:25

标签: php codeigniter

在我的头发被撕掉后,我发布了这个,朗姆酒用尽了,并尝试了我在谷歌上找到的一切。我一直在使用codeigniter开发一个使用模板的网站。我先建立了后端,所有工作都在那里正常工作。所以现在我开始让前端工作,这就是我遇到问题的地方。

我创建了一个名为pages.php的控制器,它将解析当前页面的uri字符串,使用我的库从数据库中获取页面数据,然后显示它。我的页面都是通过后端的编辑器创建的,并存储在数据库中。

所以这里是页面控制器

class Pages extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->library("pages");
    }

    public function display_page()
    {
        $page_slug = $this->uri->segment(1);
        $data["joes"] = "Here's joes first variable";
        $this->pages->get_page($page_slug);
    }
}

这是我点击我的网址时遇到的错误消息demo.mydomain.com/joes-test

ERROR MESSAGE

以下是我的路线设置方式。 $route['(:any)'] = 'pages/display_page';

我的Pages.php库在后端工作得很好,但它是一个大文件。我只在下面发布了get_page函数。如果你需要看到一切让我知道。但我不相信这个问题与图书馆本身有什么关系。

public function get_page($slug){
    $objPages = new pages();
    $objPages->get_object('slug="'.$slug.'"');
    return $objPages;
}

[编辑]如果我将以下内容放在我的主页控制器中,它可以工作。但是调用函数需要在库中。

$this->load->library('pages');
$the_page = $this->pages->get_page("joes-test");

我想致电$this->get_object("joes-test"),但这不起作用。 get_object()是库中的继承函数。

现在奇怪了。如果我在pages控制器

中执行完全相同的操作,我上面的代码将无效

任何导致解决方案的帮助都会很棒。我是在时间紧迫的情况下付出代价来获得一些帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

不,你不能在控制器和库中使用相同的名称。请选择其他名称。例如,控制器名称的Mypages。 改变你的路线

$route['(:any)'] = 'mypages/display_page';
然后打电话给你的控制器。

http://demo.mydomain.com/joes-test

答案 1 :(得分:-1)

我认为图书馆uri没有任何问题,因为正如codeigniter官方网站所说:This class is initialized automatically by the system so there is no need to do it manually.

我不了解lib页面,但是如何使用

$this->load->view(<file-html>);

如果你想在变量中传递数据,你可以像这样添加变量

$this->load->view(<file-html>, $data);

希望这个帮助,干杯