2016-11-26 8 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で、2番目のセグメントはsearchで、残りはクエリ文字列です。

URIデザインを標準的な方法で変更する必要があります。たとえば:

blog/search/5?query=post 

$this->uri->segment(3)への呼び出しは、あなたが心の中に持っているものを返すように。

CodeIgniterページネーションライブラリについては、のreuse_query_stringおよびpage_query_stringのコンフィグレーションを参照してください。

+0

知識を共有してくれてありがとう。私は$ config ['base_url'] = base_url()。 'blog/search?query ='を定義しているCIページネーションライブラリを使用しています。 urlencode($ query); 。とにかくCIのページネーションライブラリに "base_url"を "blog/search/5?query = post"のように伝えるようになっていますか?もう一度ありがとうございます –

+0

CodeIgniterの[ページングライブラリ](https://www.codeigniter.com/userguide3/libraries/pagination.html)の 'reuse_query_string'設定をご覧ください。あるいは、 'page_query_string'設定をtrueに設定することで、ページネーションのパラメータを完全にクエリ文字列に変換できます。ドキュメントを読む。 – sepehr

+0

ありがとう、それは今では素晴らしい作品です。私は$ config ['reuse_query_string'] = trueを実行しました。 \t \t $ config ['base_url'] = base_url()。 'blog/search'; –