0

codeigniterのURIルート機能に奇妙な問題があります...特にワイルドカードの使用を取り巻くものです。

次のURLを「locations」コントローラーにルーティングして、「edit」メソッドを呼び出しようとしています。

http://foo.bar/stores/4fdbc15b8e08233c6d9f7d91/locations/4fdbc2ed8e08233c6d9f7d93/edit

ルート設定ファイルに次の設定があります。

$route['stores/(:any)/locations/(:any)/edit'] = 'locations/edit';

ただし...上記のURLにパスしようとすると、サイトが停止します。

私は正規表現を使おうとしましたが、残念ながら正規表現は私の強みではないため、それも機能していません。

私は他のstackoverflowの例や他のサイトを見てきましたが、私が持っている奇妙なURL構造については何も語っていません。任意の提案/解決策をいただければ幸いです。よろしくお願いします!

4

2 に答える 2

0

リクエスト uri の文字列が可変長であると仮定すると、次のように試すことができます。

$route['stores/([a-z0-9]*)/locations/([a-z0-9]*)/edit'] = 'locations/edit';

ただし、正規表現に一致する文字列で何をすべきかを明確にしませんでした。それらを単に最後に追加すると、ルートは次のようになります。

$route['stores/([a-z0-9]*)/locations/([a-z0-9]*)/edit'] = 'locations/edit/$1/$2';

その場合、コントローラ メソッドで$this->uri_segment()関数を使用して文字列を解析できます。

$firstHash = $this->uri_segment(3);
$secondHash = $this->uri_segment(4);
于 2012-06-27T16:25:16.557 に答える
0

やりたいことを実現するための簡単なテクニックを紹介します

$route['stores/(:any)'] = 'locations/edit';

次に、uri_segment(n)を使用して、編集コントローラー関数で値を取得します。

単純?

于 2012-06-28T05:51:53.243 に答える