0

私のconfig/routes.phpファイルには次のものがあります:

$route['(:any)'] = "dashboard/index/$1";

mysite.com/user/idという URL にアクセスすると、これは期待どおりに機能します。ダッシュボード コントローラーの関数が呼び出され、1 番目のパラメーターは「user」、2 番目の「id」です。ただし、投稿を通過してmysite.com/user/id?page=2などの値を取得すると、関数は投稿パラメーターを無視するように見え、最初の (そして唯一の) パラメーターは「2」です。

私のconfig.phpファイルには次の値があります:


$config[‘uri_protocol’]  = “AUTO”;
$config[‘enable_query_strings’] = TRUE;

および .htaccess:


RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

ルート条件に何か不足していますか?

4

2 に答える 2

1

それは間違いなくあなたのカスタム ルートです。文字列 id?page=2 が 1 つのパラメーターとして渡されると思うので、yoursite.com/user/id/?page=2 を試していただけますか。渡された URL キーの配列を出力してデバッグを行うこともできます。

echo '<プレ>';
print_r($this->uri->segment_array());
エコー '</pre>'

コントローラーアクションに渡されるすべてのパラメーターを取得します。この回答も見ることができます:それが必要な場合は、コア URI クラスの拡張についてcodeigniter で URL の疑問符を処理します。これが役立つことを願っています。それ以外の場合は、より多くの情報が役立ちます。たとえば、site.com/user/id のような通常のリクエストを使用している場合と、site.com/user/id を実行している場合にコントローラーに渡される URL キーは何ですか?ページ = 2 リクエスト。

****** 編集 ********** CI 1.7.1 または 1.7.2 を使用している場合、_fetch_uri_string メソッドには次のようなものがあるため、[1] => ページを取得しています。

if (is_array($_GET) && count($_GET) == 1 && トリム(キー($_GET), '/') != '')
{
     $this->uri_string = key($_GET);
     戻る;
}

あなたは site.com/user/id/?page=2 を持っているので、これは次を意味します: $_GET['page'] = 2 そして page は $_GET のキーの名前です

アプリケーションでこのクラスを拡張し、ここに独自のロジックを追加する方法については、上記のリンクを使用してください。たとえば、このようなものは 1.7.1 または 1.7.2 で機能します。

if (is_array($_GET) && count($_GET) == 1 && トリム(キー($_GET), '/') != '')
{
     // この行は必要ないのでコメントしてください
     //$this->uri_string = key($_GET);

     //現在のページ番号があればそれを取得する
     $page_number = (int) $_GET['page'];

     // 適切な ID を使用して uri_string をここに設定し、ID (ここでも取得する必要があります) とページ番号を 2 番目のパラメーターとして渡してから、単に戻ります。さらに実行を停止するには
     $this->uri_string = 'dashboard/index/id/'.$page_number
     戻る;
}

//ダッシュボード コントローラーで:
// デフォルト値を 0 に設定し、さらに処理します
public function index($id=0, $page_number=0)
{

}

お役に立てれば

于 2011-03-24T23:26:27.123 に答える
0

ここでは、URI セグメントは役に立ちません。page の値を取得する必要があります

$page = $this->input->get('page');

あなたのメソッドインターフェースはどのように見えますか?

私はちょうどこれを試しました

public function index($one = '', $two = '')
{
    echo $one.', '.$two.', ';
    echo '['.$this->input->get('page').']';
}

そして、これを出力します:user, id, [2]

于 2011-03-25T14:28:45.260 に答える