gpt4 book ai didi

codeigniter - CodeIgniter:基于文件夹和子文件夹的URL结构

转载 作者:行者123 更新时间:2023-12-02 04:01:53 31 4
gpt4 key购买 nike

我当前的CodeIgniter有点问题。我有一个带有“页面” Controller 的CI安装程序,该 Controller 可从/ views加载静态文件,但它最多只能包含1个子文件夹,而我正在向其添加另一个子文件夹。

它几乎可以执行以下操作:

  • 如果请求的URL段(例如site.com/url)作为文件(例如/views/url.php)位于/ views中,它将从那里加载它,但是如果URL段(例如url)实际上是文件夹在/ views内部,它将从该文件夹加载index.php(例如,在URL仍为site.com/url时,/ views / url / index.php)。
  • 上面带有其他文件名,不仅限于index.php。如果我有site.com/url/buy,它将从/ views / url文件夹加载buy.php文件。

  • 我想要实现的是在此结构中添加一个新的子文件夹:
  • 如果我进入site.com/url/buy/faq以从/ views / url / buy加载faq.php文件,依此类推。.

  • 当前的Pages.php Controller 如下:
    class Pages extends CI_Controller {

    public function view($page = 'index', $sub_page = 'index') {

    if ($page == 'index') {
    $path = $page . '.php';
    } else {
    $path = $page . '/' . $sub_page . '.php';
    }

    if (!file_exists('application/views/pages/' . $path)) {
    if (!file_exists('application/views/pages/' . $page . '.php')) {
    show_404();
    } else {
    $path = $page . '.php';
    }
    }

    // $this->output->cache(60);
    // $this->output->enable_profiler(TRUE);

    $data['title'] = ucfirst($page);
    $data['url'] = lcfirst($page);

    $this->load->view('pages/modules/header', $data);
    $this->load->view('pages/'. $path, $data);
    $this->load->view('pages/modules/footer', $data);

    }
    }

    你们有什么建议吗?

    提前致谢!

    最佳答案

    首先,请确保您具有正确的路由。在config/routes.php中:

    $route['default_controller'] = "pages";

    您必须在 Controller 的constuct方法中编写代码,否则您需要在url中添加方法名称。在 Pages.php中:
    class Pages extends CI_Controller {

    public function __construct() {
    parent::__construct();
    $this->view();
    }

    private function view() {

    $url_string = $this->uri->uri_string(); //get all parameters form url

    if(!file_exist(APPPATH . 'views/pages'. $url_string. '/index.php') {
    if (!file_exists(APPPATH . 'views/pages/' . $url_string . '.php')) {
    show_404();
    } else {
    $path = 'pages/' . $url_string . '.php';
    }
    }
    else {
    $path = 'pages/' . $url_string . '/index.php';
    }
    }

    //here codes continue ...
    }

    关于codeigniter - CodeIgniter:基于文件夹和子文件夹的URL结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136827/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com