2016-11-26 1 views
0

쿼리에서 반환 한 검색 결과의 페이지 매김을 시도하고 있습니다.쿼리 문자열 사용시 URI 세그먼트가 반환되지 않습니다.

blog/search?query=post/5 

내가 사용하는 URL에서 $start=5의 값을 얻기 위해 노력하고 있습니다 : 그것은 아무것도 반환하지 않습니다

$start = $this->uri->segment(3); 

나는 다음과 같은 URL이 있습니다.

?query=post을 제거하면 즉, blog/search/5이 잘 작동합니다. 하지만 쿼리 매개 변수를 유지하고 값을 읽고 싶습니다.

+0

이'? query = post'을 제거하고 링크를 따라주세요 : https://www.formget.com/codeigniter-uri-segment/ –

답변

1

URI의 ? 문자 때문입니다. CodeIgniter URI 파서 (및 다른 표준 URI 파서)는 사용자가 염두에 두었던 것을 인식하지 못합니다. ? 문자 뒤에는 URI 문자열이 아닌 모든 쿼리 문자열입니다. PHP의 parse_url()의 출력을 참조하십시오.

parse_url('blog/search?query=post/5') 
[ 
    "path" => "blog/search", 
    "query" => "query=post/5", 
] 

참조 하시겠습니까? 첫 번째 세그먼트는 blog이고 두 번째 세그먼트는 search이고 나머지는 쿼리 문자열입니다.

URI 디자인을 표준 방식으로 변경해야합니다. 예를 들어 :

blog/search/5?query=post 

$this->uri->segment(3)에 대한 호출은 당신이 생각하고있는 것을 반환되도록.

CodeIgniter 페이지 매김 라이브러리에 대해서는 에서 reuse_query_stringpage_query_string 구성을 참조하십시오.

+0

지식을 공유해 주셔서 감사합니다. 하지만 CI 정의 페이지 라이브러리를 사용하고 있는데 $ config [ 'base_url'] = base_url(). 'blog/search? query ='를 정의하고 있습니다. urlencode ($ query); . 어쨌든 CI 페이지 매김 라이브러리에 "base_url"을 이렇게 만들도록 할 것인가 -> blog/search/5? query = post. 다시 감사합니다 –

+0

CodeIgniter의 [페이지 매김 라이브러리] (https://www.codeigniter.com/userguide3/libraries/pagination.html)에 대한 CodeIgniter의'reuse_query_string' 설정을보십시오. 또는'page_query_string' 설정을 true로 설정하여 페이지 매김 매개 변수를 쿼리 문자열로 완전히 변환 할 수 있습니다. 문서를 읽으십시오. – sepehr

+0

고맙습니다. 지금은 잘 작동합니다. 나는 $ config [ 'reuse_query_string'] = true를 실행했다. \t \t $ config [ 'base_url'] = base_url(). 'blog/search'; –

관련 문제