2011-07-13 11 views
0

私はクライアントのためのサイトを作っており、コードイグナイタを使うことに決めました。codeigniter余分なURLセグメント

サイトには基本的に2つのバックエンドがあり、1つはデザイナー用で、もう1つは営業チーム用です。だから、ログインした後、ユーザーは、例えば営業チームは注文を表示することができます

  • mysite.com/sales/
  • mysite.com/design/

、コンテナ、のいずれかにリダイレクトされますしたがって、私はこれらのそれぞれのコントローラが必要です。

  • mysite.com/sales/orders/
  • 売上高は、特定の注文を表示、編集、削除できるようにする必要があり

...

  • mysite.com/sales/orders/vieworder/235433

基本的に私の問題は、遊ぶには十分なURLセグメントがありません。これは、すべてのメソッドとロードの数が多いことを意味だろうが、受注、コンテナ、製品クラスを削除

  • を私の問題を解決し、売上クラスのメソッドとして、彼らのすべてのメソッドを作る上

    私の考えそれは無意味に思えました。

  • セールス/デザイナークラスを削除し、セッションデータに格納されているユーザータイプに基づいて各ユーザーの種類を制御します。

  • 余分なURLセグメントを持つ方法?

私は助言を感謝します、私はちょうどプロジェクトに3週間を取得したくないと私は間違って始めたことを実現!

+0

私は "どのように"正確に "余分なURLセグメント"がないのですか? 「不足している」とは何ですか? – Herr

+0

こんにちは。あなたは私がdidntしても "欠けている"と言って私を引用しましたか?私は、セールスチームが特定のクラスとそのメソッドにアクセスできるようにする方法が必要です。デザイナーは同じクラスの一部にアクセスできますが、すべてのメソッドにアクセスすることはできません。 – callumander

+0

DBを介してユーザに何らかのアクセス権を与え、ユーザ/デザイナが特権を逃していると機能が実行されないのはなぜですか? – Herr

答えて

2

フォルダを使用します。

あなたはsalesあなたがそこに異なるコントローラを置くことができると呼ばれる/application/内のサブフォルダにする場合:

/application/ 
    /sales/ 
     orders.php /* Controller */ 
    /design/ 

を次にorders.phpであなたのvieworders($id)方法を置くというように、そしてあなたがそれをアクセスもすることができるようになりますdomain.com/sales/orders/vieworders/id

/models//views/にサブフォルダを作成してファイルを整理することもできます。

ここで、アクセス制御は何かと別のものであり、使用している認証システムによってさらに異なります。

0

ユーザ/デザイナにユーザの権限(ユーザテーブル内のカラムなど)を指定します。ユーザの権限を関数の先頭で確認し、それを防止または実行します。

これは私がそれを行う正確な方法です。

0

ルーティングクラスを調べる必要があるようです。汚れた解決策かもしれないが、sales /(:any)をsales_ $ 1のようなものに変更すると、sales_ordersのような名前のコントローラを作成することになります。 デザインパートと同じです。

(FYI:$routing['sales/(:any)'] = 'sales_$1';はすべきことです(application/config/routing.phpを参照)。