在代码点火器

时间:2016-03-07 09:09:22

标签: php codeigniter

我是Drupal开发人员,也是代码点火器或任何此类php框架的新手。

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

  1. example.com/motors
  2. example.com/motors/car-for-sale
  3. example.com/motors/car-for-rent等。
  4. 在它只有一个网址 example.com/motors 之前,我想创建更多网址,如上所述。

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

    应用\视图\内容\ motors.php

    application \ views \ content \ motors

    应用\视图\内容\马达\汽车换sale.php

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

    应用\控制器\ motors.php

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

    应用\控制器\马达\汽车换sale.php

    我想获取url example.com/motors&来自文件的example.com/motors/car-for-sale位于motors文件夹中。如何在打开 example.com/motors 时设置要加载的默认文件?

2 个答案:

答案 0 :(得分:0)

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

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

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

此外,您的控制器名称必须以大写字母开头,因此 default.php 将不正确,而应该是 Default.php 。这可能在Windows上适用于您(因为它不区分大小写的文件系统),但只要您将站点上传到Linux(或其他基于UNIX的)主机,任何文件名都不具备的类以大写字母开头不起作用。

答案 1 :(得分:0)

看起来您正在尝试使用与其设计完全不同的范例构建CodeIgniter站点。

您可以使用routes.php

中的application/config文件设置您所使用的结构

在那里,您可以设置路线以转到所需的任何位置,所以对您而言:

$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,或者甚至可以查看其中的{{3}}