【问题标题】:Mutliple URL Segments to Index Function With CodeIgniter使用 CodeIgniter 索引函数的多个 URL 段
【发布时间】:2010-11-30 07:33:33
【问题描述】:

如果这是一个非常愚蠢的问题,请原谅,因为我是 CodeIgniter 的新手。

我的验证系统有一个控制器,称为验证。我希望能够使用site.com/verify/123/abcd 之类的东西,但我只想使用索引功能,所以两个 URL 段都需要去它。

我确信这可以通过 URL 路由以某种方式完成,但我不知道如何将两个 URL 段传递到验证的索引函数中..

【问题讨论】:

    标签: codeigniter url-routing codeigniter-url php


    【解决方案1】:

    routes.php 中的类似内容应该可以完成这项工作:

    $route['verify/(:any)/(:any)'] = "verify/index/$1/$2";

    【讨论】:

      【解决方案2】:

      我很确定您可以在 CodeIgniter 中传递任何控制器方法多个参数,而无需修改路由或 .htaccess,除非我误解了问题。

      function index($arg_one, $arg_two)
      {
      
      }
      

      $arg_one 代表 123,$arg_two 代表示例 URI 中的 abcd。

      【讨论】:

      • 这仍然需要 URL 是 site.com/verify/index/123/abcd
      • 没错,但这确实以措辞的方式回答了 OP 的问题。
      【解决方案3】:

      您将需要编辑路由或编写 htaccess 规则,但是我不明白您为什么要仅限于索引功能。

      【讨论】:

        【解决方案4】:

        如果您出于某种原因不想使用路由,那么您可以将此功能添加到相关控制器中。

        public function _remap($method_in, $params = array()) {
            $method = 'process_'.$method_in;
            if (method_exists($this, $method)) {
                return call_user_func_array(array($this, $method), $params);
            }
            array_unshift($params, $method_in);
            $this->index($params);
        }
        

        基本上它与 CI 中的默认行为相同,除了在“找不到方法”时发送 404,它向索引发送未找到的方法调用。

        您需要更改索引函数以将数组作为第一个参数。 或者,如果您知道您只需要 2 个参数,则可以将最后 2 行更改为

        $this->index($method_in, $params[0]);
        

        当然,如果有人使用与控制器中的方法相同的参数,这两种解决方案都会失败。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-28
          • 1970-01-01
          • 2017-05-06
          • 1970-01-01
          • 2012-11-05
          • 1970-01-01
          • 2010-09-17
          相关资源
          最近更新 更多