2011-01-14 11 views
0

私はCodeigniterの最近のユーザーで、ページを管理するための単純なバックエンドCMSを開発中です。私は、データベース内の「ページ名」の値があるかどうかを検出するために、システムを希望mysite.com/pagenameCodeigniterでカスタムCMSを開発する際のルーティング処理方法

:URL(この例では、私は「index.phpをを」隠されている)に基づいて

もしあれば、私はカスタムコントローラ(例:Pagemaker)への経路を変更するシステムが必要です。ページネームと呼ばれるレコードがない場合は、普通のことです(つまり、ページネームと呼ばれるコントローラを見つける)。

現在持っている:

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

すべてのリクエストは私のカスタム機能。

しかし、この構造を変更して、ページがdbに存在しない場合は、従来のコード署名リクエストプロセスに従います。

誰でもこれを完了する方法についてアドバイスをいただけますか?または、一般的にcodeigniterでカスタムCMSをルーティングする方法についてのアドバイスはありますか?ページはデシベル 擬似コードにないとき、それはあなたのクライアントをリダイレクトできるようにカスタム関数を編集)

1:私は二つの可能性を考えることができ

答えて

1

it's stable enoughとなるので、最良の解決策はupgrade to CI 2.0です。便利な機能がたくさんあります。それだけでPageMakerのコントローラに移行して行くようにルータが知らない場合

$route['404_override'] = 'pagemaker'; 

:あなたのケースでは

は、次のルートを設定します。これにより、最初のURIセグメントが存在するかどうかを確認できます。偽のデフォルトセグメントの代わりにカスタム404ページを作成する場合は、

私はこれを聞きたくありませんが、あまりにもまだリリースされていません。私はほぼ1年間CI 2.0を使ってきました。 ;-)

+0

OKアップグレードするつもりです...私は怖いです。ホールド・ミー・フィル;-) – Ash

+0

ファインですが、あなた自身に手をつけてください。 –

+0

簡単な質問:ci 2.0に同梱されているユーザーガイドにこのルートが記載されていないのはなぜですか? – Ash

0

if($dbresult == null){ 
    redirect("http://yoursite.com/"+$this->uri->segment(3)); 
} 

2)は、ルータを編集しますCIのクラスであるため、最初にそのページがデータベース内にあるかどうかをチェックし、そうでない場合はそのまま続行します。これは、あなたのRouter.phpにdb接続が必要なのでやや難しいかもしれません

+0

この問題は、システムが常にループに入り、毎回同じページメーカークラスにリダイレクトされ、動作しないということです。 – Ash

+0

ああ、私の答えを編集しました – thomaux

関連する問題