0

CodeIgniter 2.1.4 を試しています。CodeIgnitor ドキュメントのチュートリアルを使用して構築した静的ページを表示するためのコントローラーが既にあります。後でルートを次のように設定しました。

// <http://localhost/> refers to <http://localhost/pages/view/>
   $route['default_controller'] = "pages/view";
// <http://localhost/somepage/> refers to <http://localhost/pages/view/somepage/>
   $route['(:any)'] = "pages/view/$1";
// .htaccess is already setup to rewrite the url without index.php

現在、私は PHP の経験があまりなく、URL 書き換えMVC アーキテクチャの概念は私にとってかなり新しいものです。

•Home、•About、•Admin、•Contact というページがあるとします。

•Home、•About、および •Contact の各ページについては、Pagesコントローラは正常に機能します。

しかし、管理者ページについては、ユーザーがログインしているかどうか、管理者権限などを持っているかどうかを判断する別のコントローラーが必要です。まだログインしていない場合は、代わりにログインビューをロードする必要があります。管理者ビュー。

Pagesコントローラーのロジックはかなり単純です。これは、引数の文字列が.phpビュー ディレクトリに追加され、先頭に追加され、ファイルとして存在するかどうかをチェックします。そうでないshow_404()場合は、ビューの header-templateを読み込み、次にページを読み込み、次にビューのフッターテンプレートを読み込みます。CodeIgniter を使用したことのあるほとんどの人は、静的ページの同様のロジックを見たことがあるはずです。

管理者redirect('login')ビュー内で行うことはできましたが、うまくいかないようです。管理者用に別のコントローラーを作成した場合、どのようにアクセスしますか?ルートに従って、すべての URL がコントローラーに送信されます (上記のコードの 4 行目)。pages/view

すでに述べたように、私はこれにかなり慣れていません。私が犯しているのは、遅れた間違いかもしれません。または、MVC 構造全体が不適切に構築されている可能性があります。どうすればこれを乗り越え、認証について心配し始めることができますか? 誰でもアドバイスできますか?

4

1 に答える 1

2
$route['default_controller'] = "pages/view";
$route['admin/(:any)'] = "admin/$1"; //(admin controller) with "any" method 
$route['(:any)'] = "pages/view/$1";

localhost/poject/admin/edit例として

発生している問題は単純です。すべてのコントローラーを上書きして、(:any)それが間違っているわけではありませんが、上に投稿したように、ルートする各コントローラーを通常のコントローラーとして手動で割り当てる必要があります。

ルートは順序に依存することに注意してください。一方 (最初) を使用すると、2 番目のものは無視されます。「ルートは、定義された順序で実行されます。より高いルートは常に、より低いルートよりも優先されます。」

認証については、この投稿を参照してください。

このルートをroutes.phpに入れる代わりに、 CI_Controllerを使用_remap()して拡張し、ルートを引き継ぐことをお勧めします。$route['(:any)'] = "pages/view/$1";

再マッピング

于 2013-09-19T13:10:45.920 に答える