繼上次那篇之後,我在各教學網站上打滾了很久,因為CI的分頁雖然很方便,但是不知道是不是使用的族群太少,一些比較複雜一點功能的文件真的是少的很可憐。像這次遇到分頁的問題就讓我進度卡到陰了一整個禮拜。
我們要弄的是在搜尋後,會將搜尋值keep在input box裡,並將結果顯示在下方表格裡,聽起來很簡單,但是做起來還蠻複雜的。
首先要將CI預設URI的//之前為空值會自動刪掉的部份做修改(以下轉自諾魯島)。 → /system/libraries/URI.php
//1. 註解掉 function _fetch_uri_string 中的
$path = (isset($_SERVER)) ? $_SERVER : @getenv('PATH_INFO');
//2. 在該行下面加入
$path = '';
if (isset($_SERVER) && isset($_SERVER)) {
$path = str_replace($_SERVER, '', $_SERVER);
} else {
$path = @getenv('PATH_INFO');
}
//3. 將 function _explode_segments() 中的 if ($val != ”) 註解掉
這段改好之後,你在controller裡加上的$var/就不會因為空值被刪掉,再來,就是中文顯示的問題。
因為CI內建的一些功能沒有限制很多,所以也建議不要寫死(上述那個有用到再改,目前還不知道怎麼拉出來做),在中文設定上自己建一個MY_URI(要在網址列上傳中文)。
class MY_URI extends CI_URI {
function _filter_uri($str)
{
if ($str != '' && $this->config->item('permitted_uri_chars') != '' && $this->config->item('enable_query_strings') == FALSE)
{
$str = urlencode($str); //編碼(解決url中文字問題)
if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", $str))
{
show_error('The URI you submitted has disallowed characters.', 400);
}
$str = urldecode($str); //解碼
}
// Convert programatic characters to entities
$bad = array('$', '(', ')', '%28', '%29');
$good = array('$', '(', ')', '(', ')');
return str_replace($bad, $good, $str);
}
}
這樣就可以解決中文問題。分頁的部份目前是解決了一大半,還好同事有看到這篇文章,不然應該還是卡在那邊了 囧>
參考網站:諾魯島

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 