【问题标题】:CodeIgniter: adding parameters to URLCodeIgniter:向 URL 添加参数
【发布时间】:2011-06-06 12:49:52
【问题描述】:

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

所以我的例子是 localhost/codeigniter/edinburgh。我会抓住最后一段,然后创建 sql 查询。但是,我认为当我将爱丁堡放入 URL CI 时,我认为我正在寻找一个名为“爱丁堡”的控制器。

我必须添加路由或类似的东西吗?

【问题讨论】:

    标签: php codeigniter codeigniter-routing


    【解决方案1】:

    是的,您可以使用route

    $route[':any/'] = "myclass/by_city_method";
    

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

    class city extends Controller { 
       public void index($city=false) {
           if ($city) { } else { }
       }
    }
    

    编辑:您甚至可以在全局配置文件中选择城市作为默认控制器。

    【讨论】:

      【解决方案2】:

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

      $route[':any'] = "控制器/方法";

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

      $this->load->helper('url'); // 先加载助手

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

      当访问http://localhost/codeigniter/edinburgh 时,上例中的$city 变量将是爱丁堡。

      希望有帮助!

      PS。您不需要 mod_rewrite 来指定默认控制器。您可以在 Routes 下的 config.php 中设置它。指定 city 作为你的默认控制器,你可以摆脱 mod_rewrite。

      【讨论】:

      • 谢谢,现在我的 post_insert 方法得到了同样的对待。我必须指定要忽略的方法吗?
      • 如果您需要更具体的路由,只需将它们添加为 $route[':any'] 上方的路由即可。
      【解决方案3】:
      $path = "/codeignter/city/viewcity/Edinburg";
      

      这将导致 City 控制器被调用,方法 viewcity 被执行,参数为 'Edinburg' 被传递!

      这是您的控制器的代码...

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

      阿门 :)

      【讨论】:

        【解决方案4】:

        另一种方法:

        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";
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2015-04-24
          • 1970-01-01
          • 2011-03-07
          • 2022-12-28
          • 2019-07-04
          • 2012-05-01
          • 2010-10-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多