最近Codeigniterを使っていましたが、コントローラ内の関数を再マップして動的なpretty URLを持つことができることを知りました。
私はちょうどコントローラで行うことができます知りたいですか?私はhttp://example.com/stack
と呼ぶとstack
という名前のコントローラを探し、見つからなければ固定された/再マップされたコントローラを呼び出して、それを処理することができます。
これはできますか?再マッピングCodeigniterコントローラ
答えて
はい、それはuri routingを使用して達成できます。
application/config/routes.php
では、カスタムルートを再マッピングするURIに設定できます。
すでに2つが用意されていますが、デフォルトのもの(コントローラが呼び出されていない場合)と404エラールーティングがあります。
カスタムルートを追加する場合は、2つのデフォルトルートの下に追加します。表示される順序で実行されることに注意してください。
セイは、たとえば、あなただけの使用、別のコントローラに「スタック」を再マッピングしたい:
$routes['stack'] = 'othercontroller';
このように、あなたは「スタック」をアクセスするたびに自動的に「othercontroller」にマッピングされます、それが存在しない場合は、同じ404エラーが発生します。 .htaccessでURLからindex.phpを隠している場合は、それを$config['index_page'] = 'index.php';
に挿入することを忘れないでください。
コントローラーが見つからないときに達成しようとしているのはカスタムエラーメッセージです。@ Juris Malinensが提案したように404ルートをオーバーライドし、カスタムデフォルトコントローラーを使ってその状況を処理します
$route['404_override'] = 'customcontroller';
あなたは/ routes.php- CodeIgniterでは、[「404_override」]
コントローラが見つからない場合使用$ルート;-)非常に柔軟性があり、このまたは設定を行うには.htaccessを使用することができます。 config/routes.php
これを行うには、application/config/routes.phpファイルが適切です。 Jurisによって言及された404_overrideは、古いバージョン(私は知らない、レガシーシステムで作業しているかもしれない、または将来必要があるかもしれない)を持っている場合にのみ、CI 2.xでのみ利用可能です。
注:これを使用してコントローラを「再マップ」する以外にも、さまざまなことができます。ルートは、htaccess書き換えルールのような正規表現パターンを受け入れます。基本的には正規表現の人間が読めるエイリアスであるCIパターンもあります。あなたは完全にあなたのURLからコントローラ名を削除するためにルートを使用する方法を見て
$route["category/(:any)"] = "articles/category/$1";
$route["search/(:any)"] = "articles/search/$1";
$route["(:any)"] = "articles/article/$1';
:あなたはcategory
、search
とarticle
機能を持つArticles
コントローラを持っていたと言う、あなたはのように見えたルートを持っているのでしょうか?これらのルールは、URLが特にカテゴリページまたは検索クエリであると言わない場合、そのページが記事であると仮定することに戻ります。次に、URLの記事があるかどうかを確認し、必要に応じて404を表示することができます。
多分これはあなたを助けることができる:私は404_overrideを使用している場合ので、customcontrollerは、コントローラが見つからないされるたびに呼び出されます
function _remap($method)
{
/// $method contains the second segment of your URI
switch($method)
{
case 'about-me':
$this->about_me();
break;
case 'successful':
$this->display_successful_message();
break;
default:
$this->page_not_found();
break;
}
}
- 1. コントローラとルートCodeigniter
- 2. CodeIgniterのコントローラ
- 3. CodeIgniterのコントローラ
- 4. codeigniterコントローラ機構
- 5. CodeIgniterコントローラのテスト
- 6. CodeIgniterとコントローラ
- 7. CodeIgniterのコントローラでデータベース
- 8. Codeigniterコントローラの設定
- 9. コントローラ内のCodeIgniterヘルパー
- 10. CodeIgniterのコントローラを通じてクラスを再利用
- 11. Codeigniter再利用可能なコントローラ関数の$ data
- 12. Spring MVC - コントローラへのマッピング
- 13. Grailsのコントローラ名とURLマッピング
- 14. UnityのBluetoothコントローラのマッピング
- 15. CodeIgniterのCLIコントローラは災難
- 16. CodeigniterコントローラのBootstrapDialog警告
- 17. CodeIgniterの3のコントローラ/メソッドバリデーション
- 18. CodeIgniterネストされたコントローラ?
- 19. Codeigniterコントローラのネーミングの問題
- 20. CodeIgniterコントローラの簡略化
- 21. アクセス前のコントローラCodeIgniterのフック
- 22. Spring 3コントローラのマッピングの競合
- 23. Spring MVCのコントローラのマッピング正規表現
- 24. Grailsコントローラのマッピング、完全な誤解
- 25. 春コントローラのマッピングの問題 - ダブルワイルドカード
- 26. Inno Setup:レジストリハイブの再マッピング
- 27. Emacsコマンドを再マッピングする
- 28. PERFORCEクライアントのルート再マッピング
- 29. アプリケーションでのキーの再マッピング
- 30. AHKキーの再マッピングaltタブ
を、右? –
@Bibhasあなたは正しいです。あなたの意志でカスタマイズされた通常のデフォルトメッセージと同じように動作します。それはかなり便利です。 –