【问题标题】:Create folder/Sub-folder in Code-igniter在 Code-igniter 中创建文件夹/子文件夹
【发布时间】:2016-03-07 17:24:45
【问题描述】:

我是一名 Drupal 开发人员,并且是 code-igniter 或任何此类 php 框架的新手。

现在我必须修改在 codeigniter 上完成的现有应用程序,结构必须如下:

  1. example.com/motors
  2. example.com/motors/car-for-sale
  3. example.com/motors/car-for-rent 等

在它只有一个 url example.com/motors 之前,我想创建更多的 url,如上所述。

在 application\views\content 文件夹中,我有以下结构:

application\views\content\motors.php

应用\视图\内容\马达

application\views\content\motors\car-for-sale.php

在 application\controller 文件夹中,我具有以下结构:

应用程序\控制器\motors.php

应用程序\控制器\电机\motors.php

application\controller\motors\car-for-sale.php

我想从位于汽车文件夹中的文件中获取 url example.com/motors & example.com/motors/car-for-sale。此外,我如何设置默认文件以在打开时加载 example.com/motors?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您不能拥有与同一级别的控制器类的名称匹配的(控制器)目录。也就是说,由于您有一个 controllers/motors.php,因此永远无法访问 controllers/motors/* 下的文件。

    相反(这是您第二个问题的答案),您应该设置 default_controller 名称并将 controllers/motors.php 重命名为 controllers/motors/<default_controller>.php

    请注意,default_controller 设置指向控制器名称(不是文件位置)并应用于所有目录。也就是说,如果您将其设置为“默认”,那么当您打开 http://domain.tld/ 时将使用 controllers/Default.php 并且 controllers/motors/Default.php 将如果您打开http://domain.tld/motors/,则可以使用。

    此外,您的控制器名称必须以大写字母开头,因此 default.php 将不正确,应改为 Default.php。这可能现在在 Windows 上对您有用(因为它不区分大小写的文件系统),但是一旦您将站点上传到 Linux(或其他基于 UNIX)的主机,任何文件名不以大写字母开头是行不通的。

    【讨论】:

    • 感谢您的宝贵意见。我更改了文件名。
    【解决方案2】:

    看起来您正在尝试构建一个 CodeIgniter 网站,其范式与设计的范式完全不同。

    您所追求的结构可以使用application/config 中的routes.php 文件进行设置

    在那里,您可以设置路线以前往所需的任何位置,因此对您而言,如下所示:

    $routes['motors/cars-for-sale'] => 'motors/cars_for_sale';
    $routes['motors/cars-for-rent'] => 'motors/cars_for_rent';
    

    然后在application/controller 中,您将有一个Motors.php 文件,该文件开始:

    class Motors extends CI_Controller{
    

    还有cars_for_salecars_for_rent的功能

    路由中的映射将其设置为链接在一起。

    为了获得任何给定路线所需的视图,在控制器功能中,您需要:

    $this->load->view('path/to/view/file', $array_of_data); // view path does not need the .php extension
    

    我建议在他们的文档中查看甚至可能跟进 CodeIgniter tutorial

    【讨论】:

    • 感谢您的回答。我创建了 url motor/used-car-for-sale 。它根据查询显示结果。现在我需要在尝试example.com/motors 时显示页面的方法。在这个页面中,我给出了没有任何标准的列表。我想我可以在电机文件夹中创建一个索引页面。我试过这个但失败了。我想删除控制器和视图/内容文件夹中的motors.php,然后我将加载诸如example.com/motors、example.com/motors/car-for-sale之类的url。
    • 我设法在 example.com/motors/ 中显示项目。再次感谢。