【问题标题】:Codeigniter Front End Controller Not working with librariesCodeigniter 前端控制器不使用库
【发布时间】:2017-11-30 15:50:24
【问题描述】:

在我的头发被扯掉、朗姆酒用完并尝试了我在谷歌上能找到的一切之后,我发布了这篇文章。我一直在使用使用模板的 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点击我的网址时收到的错误消息

这是我的路线设置方式。 $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 控制器中执行完全相同的操作,我上面的代码将不起作用

任何导致解决方案的帮助都会很棒。我时间紧迫,需要付费才能获得一些帮助。提前致谢。

【问题讨论】:

  • pages 库类是否包含构造函数?
  • 我想知道这是否可以成为 CI 著名的大写挑剔的一个例子。尝试重命名您的 pages.php 库 Pages.php。
  • @Utkanos 如果他正在运行 CI 3,那么类名必须以大写字符开头,因为他说它在其他地方工作,我想他可能会覆盖他库中的调用构造函数跨度>
  • 我指的是库文件名,而不是类名。
  • 是的,页面确实包含一个构造函数和其中的parent::__construct()。库文件称为Pages.php,里面的类也称为Pages

标签: php codeigniter


【解决方案1】:

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

$route['(:any)'] = 'mypages/display_page';

然后调用你的控制器。

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

【讨论】:

    【解决方案2】:

    我认为库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);
    

    希望对您有所帮助,干杯

    【讨论】:

    • 这个答案似乎与问题无关
    猜你喜欢
    • 1970-01-01
    • 2011-07-04
    • 2015-11-30
    • 2023-04-10
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多