Codeigniter忽略多个段的中间段

时间:2012-07-03 12:20:48

标签: php codeigniter url uri

我尝试了很多方法来解决这个问题但没有办法。

假设我有一个班级:

class MyTestClass{
    function testPrint($a = '', $b = '', $c = '') 
    {
        echo '1: ' . $a . ', 2: ' . $b . ', 3: ' . $c;        
    }
}

如果我使用此URL访问此功能 http://localhost/ci/index.php/myTestClass/testPrint/a/b/c您会看到1: a, 2: b, 3: c作为输出,没关系。

但是如果我将$ b分配给空字符串,则该网址将更改为http://localhost/ci/index.php/myTestClass/testPrint/a//c

输出将更改为1: a, 2: c, 3:似乎CI忽略了缺少的参数。

问题是如何防止CI忽略uri中间缺少的参数?

我刚才的预期输出是1: a, 2: , 3: c

顺便说一句,我尝试使用$this->uri->segment(n)来保护参数位置,但它不起作用。

我尝试通过添加:

来更新routes.php

$route['myTestClass/(:any)/(:any)/(:any)/(:any)'] = "myTestClass/$1/$2/$3/$4";但这不会改变任何事情。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定你的情况是否可行,但我要做的是使用一个简短的虚拟字符串(本例中为xyz),以防止必须处理/ /然后过滤它出来了。

http://localhost/ci/index.php/myTestClass/testPrint/a/xyz/c

if ($b == 'xyz')
{ 
   $b = ''
}

如果可能,请尝试POST变量而不是使用URI段。这会让事情变得容易多了。 希望这可以帮助。

更新

由于您无法发帖,enabling query strings怎么样?