2012-03-28 2 views
0

私はCodeIgniterを使ってCMSを作っています。たとえば、URLパラメータに渡されたテキストslugに応じて、データベースからページコンテンツを読み込みます。約、サービス、連絡先。Codeigniterコントローラを使用してページをロードするにはどうすればよいですか?

コントローラコードでは、デフォルトのインデックスメソッドはパラメータを許可しないため、インデックスメソッドをパラメータとして使用するようにインデックスメソッドを再マップしました。下のリンクを私のpageコントローラのコードを確認 :この作品

http://pastebin.com/MwsVzRwQ

方法があり、私はデフォルトとしてロードするpageコントローラを設定しています。したがって、この

http://www.mysite.com

のような私は、私のサイトを開くたびに、それは我々がそれにスラグを渡すと、それから、そのスラグのページのコンテンツをロードし、この

http://www.mysite.com/page

のようなコントローラをロードしますこの

http://www.mysite.com/page/about http://www.mysite.com/page/portfolio

0などのデータベース、

私たちがスラッグに合格しなければ、ホームページをロードします。

私がしたいことは、この「ページ」テキストをURLに表示したくないということです。だから、ページが、私は、これはURLの書き換えによって可能になると思います。この

http://www.mysite.com/about

http://www.mysite.com/portfolio

のように開く必要があります。 URLからindex.phpを削除するURLの書き換えは、すでにすべてのCodeigniter Webサイトで行われています。以下は私の.htaccessファイルのコード

RewriteEngine on 

RewriteCond $1 !^(index\.php|uploads|fckeditor|assets|robots\.txt) 

RewriteRule ^(.*)$ /jobsite/index.php/$1 [L] 

は今の質問は、どのように私は、事前にこの

http://www.mysite.com/about

http://www.mysite.com/portfolio

のようなURLの作業を感謝することができますされています。

答えて

3

はちょうどあなたのconfig/routes.phpのファイルにこれを追加します。あなたはURIセグメントを持っていたら

$this->uri->segment(1); 

:* *のyour_controllerに続いて

$route[':any'] = 'your_controller'; 

、あなたがURIセグメントにアクセスすることができますあなたはそれをDBに照会し、あなたのビューにデータを送ることができます。 URIセグメントが空の場合は、ホームページをロードします。そう私はどうなることyRosenは違いの少しで、正しい順序でmentionnedとして、提案されたものである

+0

gr8、それは働いた。/admin_panel、/ order_managerなどのコントローラの例外を追加するにはどうすればよいですか? – aslamdoctor

+0

CIドキュメントの@aslamdoctor:「ルートは定義されている順番で実行されます」高いルートは常に低い優先順位よりも優先されます。 うまくいけば、それを正解として受け入れますか? :) – yrosen

+0

のコースは受け付けています。あなたがこのadmin_panelで私を助けることができるなら、それは理解されるでしょう:) – aslamdoctor

0

OK、:

まずあなたの管理者コントローラその後、他のすべて:

$route['admin_panel/user_manager/(:any)'] = "admin_panel/user_manager/$1"; 
$route['admin_panel/pages_manager/(:any)'] = "admin_panel/pages_manager/$1"; 
$route['admin_panel'] = "admin_panel"; 

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

複雑なサイトを作るときやURLをあまりにも多く使うときに私が通常考えているもう一つのことは、管理者を別のホストに置くことです。 公共側に「www.myhost.com」を予約し、管理者用に「admin.myhost.com」を使用します。もちろん、それは2 CIのインストールとモデルの少し重複が必要ですが、それは時間を節約し、セキュリティを高めることができます。