我需要使用分页进行简单的网站搜索;谁能告诉我如何在不影响URL结构的情况下做到这一点?目前我正在使用默认的CodeIgniter URL结构,我已从中删除了index.php
。有什么建议吗?
答案 0 :(得分:3)
您可以使用/search/search_term/page_number
之类的网址。
设置这样的路线:
$route['search/:any'] = "search/index";
你的控制器是这样的:
function index()
{
$search_term = $this->uri->rsegment(3);
$page = ( ! $this->uri->rsegment(4)) ? 1 : $this->uri->rsegment(4);
// some VALIDATION and then do your search
}
答案 1 :(得分:1)
只是为了更新这个问题。最好使用以下功能:
$uri = $this->uri->uri_to_assoc()
然后结果将所有内容放入一个关联数组中,如下所示:
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)
答案 2 :(得分:0)
不太明白“影响网址结构”是什么意思。你的意思是你想要在没有URL改变的情况下发生分页吗?
CI中的标准分页类允许您设置分页,以便URL中唯一的更改将是最后的数字
例如,如果您的网址有5个结果,则您的网址可能是
http://www.example.com/searchresults
然后第2页将是
http://www.example.com/searchresults/5
和第3页将是
http://www.example.com/searchresults/10
等等。
如果您想在不更改URL的情况下执行此操作,请使用ajax我猜。
答案 3 :(得分:0)
代码点火器默认禁用GET查询,但如果您希望网址显示搜索字符串,则可以构建替代。
您的网址可以是符号 的 www.yoursite.com/index.php/class/function/request1:value1/request2:value2 强>
$request = getRequests();
echo $request['request1'];
echo $request['request2'];
function getRequests()
{
//get the default object
$CI =& get_instance();
//declare an array of request and add add basic page info
$requestArray = array();
$requests = $CI->uri->segment_array();
foreach ($requests as $request)
{
$pos = strrpos($request, ':');
if($pos >0)
{
list($key,$value)=explode(':', $request);
if(!empty($value) || $value='') $requestArray[$key]=$value;
}
}
return $requestArray ;
}