0

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

假设我有一堂课:

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 分配给一个空字符串,则 url 将更改为http://localhost/ci/index.php/myTestClass/testPrint/a//c

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

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

我现在的预期输出是 url1: a, 2: , 3: c

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

我尝试通过添加以下内容来更新 routes.php:

$route['myTestClass/(:any)/(:any)/(:any)/(:any)'] = "myTestClass/$1/$2/$3/$4";但这并没有改变任何东西。

任何的想法?

4

1 回答 1

0

我不确定在您的情况下这是否可行,但我会使用一个短的虚拟字符串(在本例中为 xyz),以防止必须处理/ /然后将其过滤掉。

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

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

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

更新:

既然不能 POST,那么启用查询字符串怎么样?

于 2012-07-03T12:36:39.360 回答