-1

重複の可能性:
CodeIgniterルーティング

何が起こるべきか:ユーザーはURIに移動し、routes.phpは状態を取得してコントローラーに送信し、コントローラーはデータベースクエリからいくつかの情報を返します。かなり基本的なもの。

問題:URIが変数をコントローラーに渡していない。私は言われています

States::state_summaryの引数1がありません

関数の引数のデフォルトを設定できます。($ st ='アラバマ')そしてすべてがスムーズに動作します。

これがどのように可能かさえわかりません。少なくとも、バグを追跡するために何をテストする必要があるかを教えてください。

URI:

http://example.com/index.php/states/Alabama

ルート.php:

$route['states/(.*)'] = "states/state_summary/$1";

状態コントローラー:

...

function state_summary($st)
{
// DB query
// Return data
}

...
4

2 に答える 2

0

私はあなたのルートがこれに調整されるべきだと信じています:

$route['states/(:any)'] = "states/state_summary/$1";

それは私のために働いた。(。*)が使用されているのを見たことがないので、有効かどうかはわかりません。

于 2009-12-26T06:04:31.880 に答える
0

さて、私はコントローラーをパラメーターを持つように書くことは決してなく、代わりにrsegmentメソッドを使用します:

...

function state_summary()
{
  $st = trim($this->uri->rsegment(3));
  // DB query
  // Return data
}
...

これにより、渡されたパラメーターをより詳細に制御できます。モデルまたはライブラリに渡す前に、trim または intval を使用してサニタイズできます。

また、URL のルーティングに関する codeigniter コア ライブラリにいくつかの調整があります。ファイルの 278 行あたりsystem/libraries/Router.phpのコードを参照してくださいfunction _parse_routes()。これは、CI で URI ルーティングがどのように機能するかです。

于 2010-01-13T02:53:05.460 に答える