Php CodeIgniter:向URL添加参数

Php CodeIgniter:向URL添加参数,php,codeigniter,codeigniter-routing,Php,Codeigniter,Codeigniter Routing,开始我的第一个CI项目,我只是想知道如何处理URL参数?我有一个名为“city”的控制器,我修改了我的mod_rewrite,以便localhost/codeigniter使用rewrite来重写localhost/codeigniter/city。我要做的是在URL的末尾添加一个城市名称,并使用get segment查询一个表 我的例子是localhost/codeigniter/edinburgh。我将获取最后一段,然后创建sql查询。然而,我认为当我把爱丁堡放到URL中时,CI认为我在寻找

开始我的第一个CI项目,我只是想知道如何处理URL参数?我有一个名为“city”的控制器,我修改了我的mod_rewrite,以便localhost/codeigniter使用rewrite来重写localhost/codeigniter/city。我要做的是在URL的末尾添加一个城市名称,并使用get segment查询一个表

我的例子是localhost/codeigniter/edinburgh。我将获取最后一段,然后创建sql查询。然而,我认为当我把爱丁堡放到URL中时,CI认为我在寻找一个名为“爱丁堡”的控制器

我是否必须添加路由输入或类似内容?

是的,您可以使用:

但是为什么不使用一个名为(例如)city的模块来获取经典的uri方案呢

class city extends Controller { 
   public void index($city=false) {
       if ($city) { } else { }
   }
}
编辑:您甚至可以在全局配置文件中选择城市作为默认控制器。

您确实可以使用它来执行此操作

$route[':any']=“控制器/方法”

这将把基本url之后的所有内容重定向到该控制器中指定的控制器和方法。要获取url段,可以使用

$this->load->helper('url');//首先加载辅助对象

$city=$this->uri->segment(1)

当访问上述示例中的$city变量时,将使用爱丁堡

希望有帮助

另外,您不需要重新编写mod_来指定默认控制器。您可以在config.php中的Routes下进行设置。将城市指定为默认控制器,您就可以摆脱mod_重写

$path = "/codeignter/city/viewcity/Edinburg";
这将导致调用城市控制器,执行方法查看城市,并传递值为的参数“爱丁堡”

这是你的控制器的代码

class city extends Controller { 
   public viewcity($city='') {
       echo ($city === '') ? "The city you want to view is {$city}!" : "not defined!";
   }
}
阿门:)

另一种方法:

route.php:

$route['city/(:any)'] = "city/city_lookup/$1";
city.php

<?php 
class City extends Controller {

    function City()
    {
        parent::Controller();
    }

    function city_lookup($id)
    {
        echo "$id";
    }
}

谢谢,现在我的post_insert方法也一样了。是否必须指定要忽略的方法?如果需要更具体的路由,只需将它们作为路由添加到$route[':any']上方。
<?php 
class City extends Controller {

    function City()
    {
        parent::Controller();
    }

    function city_lookup($id)
    {
        echo "$id";
    }
}