我嘗試了很多方法來解決這個問題,但都沒有成功。Codeigniter忽略多個段的中間段
假設我有一個類:
class MyTestClass{
function testPrint($a = '', $b = '', $c = '')
{
echo '1: ' . $a . ', 2: ' . $b . ', 3: ' . $c;
}
}
,如果我用這個網址 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中間缺少的參數?
我對剛纔的URL預期輸出是1: a, 2: , 3: c
順便說一句,我試圖用$this->uri->segment(n)
以確保參數的位置,但它不工作。
我試圖通過添加更新routes.php文件:
$route['myTestClass/(:any)/(:any)/(:any)/(:any)'] = "myTestClass/$1/$2/$3/$4";
但是這不會改變任何東西。
有什麼想法?
我不確定這是一個CI問題,我會猜測瀏覽器和/或網絡服務器。如果我輸入URL http://stackoverflow.com//questions//11310801//codeigniter-ignores-the-middle-segment-from-multiple-segments我會看到這個頁面。 CI「看到」的可能性很可能是「http:// localhost/ci/index.php/myTestClass/testPrint/a/c」 – danneth
生成URL時,是否可以不設置'$ b'的缺省值params),說0或'null'這個詞?路線是最有意義的,但有很多情況下需要迎合! – cchana
@cchana它不是CI的問題,它的瀏覽器如何解釋鏈接。您可能需要考慮將代碼修改爲類似於/ 0/c的代碼,即您對「b」有某種類型的輸入。你可以爲if($ b == 0)$ b ='';'執行if語句,如果你真的需要它是空白的。 –