2012-03-02 9 views
0

私はCodeigniterとMVCパターンでアプリケーションを作成しています。 私はエントリ、ユーザー、カテゴリのような異なるオブジェクトのための再利用可能な管理ツールを作成したいと思っています。さまざまなコントローラやビュー、複数の時間にわたって特定のツールセットが必要になります。MVCとモデルでの表示

私は$nameは、ツール(ちょうどHTMLフォームになります)を設定し、それらのフォームを処理するために$data必要な変数(オブジェクトの最も可能性が高い$id)の名​​前になります$this->load_admin_tools($name,$data)ような何かを呼び出すことができるようにしたいです。

私はので、私は一つの場所にいくつかのツールを追加または削除することができることをやりたいです。

私はツールが表示され、その後、(/編集の/ etcを削除するフォームを)適切なビューをロードする必要がある場合、私は許可をチェックしますmodel_admin_toolsを作成することを考えていました。私はそれらがコントローラであることを知っています(パーミッションをチェックして何かを表示するかどうかを決める)が、同じコードを何度も何度も何度も何度も何度も何度も繰り返していると、それらをモデルに入れるよりも最悪です。私はコントローラ内にプライベート関数を作成することができましたが、その後、その関数をすべてのコントローラに入れなければなりません。

これを達成するより良い方法はありますか?私はヘルパーを考えていましたが、再びヘルパーは「ビュー」ではありません。それとも、私はあまりにも面白いですか?

ありがとうございます。

答えて

1

これは、ビューでヘルパーを使用するには、悪い習慣はありません。いつも私の見解で使っているヘルパーの1人は、ヘルパーです。

あなたは多くのコントローラで使用できるツールのセットをしたい場合は、単に何をしたモデルを作成し、あなたのコントローラのそれぞれにあなただけのそのモデルをロードしてから機能を呼び出すことができます。それはモデルの目的が再利用されることです。

も ​​- あなたはtrueに三番目のパラメータを設定することにより、変数としてビューを返すことができます。このページの一番下を参照してください:http://codeigniter.com/user_guide/general/views.html

例コントローラ方法:

public function method() 
{ 
    $this->load->model('myModel'); 
    $var = $this->myModel->modelMethod(); 

    if($var == true) { 
     $data['sectionOne'] = $this->load->view('myView', '', true); 
    } 

    $this->load->view('layout', $data); 

} 
+0

は、はい、私はヘルパーのすべての時間を使用しますが、私はそれらのビューをロードしていませんよ。明確にするために。私は5つの異なるHTMLフォーム(例えば、編集/削除/禁止など)をユーザのアクションに対して言うようにロードしたい。だから私はそれがロードされるべきかどうか、そしてどのような形式であるかをチェックする必要があります。次に、適切なHTMLフォーム(ビュー)を読み込む必要があります。ですから、最後にはモデル内で '$ this-> load-> view( 'user_delete_form')'となります。そして私が知っているように、これはコントローラで行う必要があります。私はちょっと混乱しているのですが、もっと良い方法があるのだろうかと思います。 – user1245750

+0

私の編集した答えを見て、あなたの質問に答えられるかどうかを見てください。 – Catfish

+0

それは正確に私が達成したいものではありません。その方法では、モデルを呼び出して結果を確認してからビューをロードする必要があるからです。そのコードブロックはコントローラ間で何度も何度も繰り返されます;)理想的には、そのコードを(モデルのような)一つの関数に置き、それを呼び出すだけです。しかし、そのようにして私はモデルに 'load-> view()'を持ちます。私はそれが可能かどうか私は確認する必要があるかわからない。つまり、私は、ビュー内でスイッチを作成し、必要なビューをロードするための第2パラメータに基づいてスイッチを作成できます。 1行のコードでチェックできない場合でも、3行は20よりはるかに優れています – user1245750

関連する問題