2016-04-18 5 views
0

現在、codeigniterを使用して電子商取引を行っています。私はほぼすべてのビューを完了しており、現在はコーディング(コントローラとモデル)を開始しています。 ログインのために、私のイデアはそのフォームを「トップビュー」に設定しています。CodeIgniter - Viewへの関数をすべてのページで呼び出すようにアタッチする

問題は、すべてのコントローラーで「トップビュー」を呼び出し、呼び出すたびにform_validationを構成する必要があることです。 これに対処する適切な方法はありますか?

+0

"トップビュー"とはどういう意味ですか?理想的には、ログインビューは1回だけ呼び出されるべきです。ユーザーがログインすると、再び表示されません。 これはセッションを介して処理することができます – user1587439

+0

ユーザーはログに記録されていなくてもサイトを実行できますが、ログインまたは登録を決定すると常にフォームが上部に表示されます。私は彼が提出をヒットするときに呼び出されるログインコントローラを行うことを考えていた。 –

答えて

0

多くの異なるページに読み込まれる一般的に繰り返されるhtmlスニペットを処理する方法の問題を解決する方法はたくさんあります。

以下に示すrender_page()機能のように、各コントローラにヘルパー機能を追加する方法があります。 [注:引数$ dataを経由して渡されるべきロードするビューのいずれかで必要とされる任意の動的データ。このと他の場所で同じコントローラで

public function index(){ 
    //do stuff including setting $data as needed 
    $this->render_page('some_view', $data); 
} 

問題

protected function render_page($main_view, $data=null){ 
    $this->load->view('top_view', $data); 
    $this->load->view('menu_view'); 
    if(isset($main_view)){ 
     $this->load->view($main_view); 
    } 
    $this->load->view('footer_view'); 
} 

すべてのコントローラーでrender_page()を定義する必要があります。これを回避するには、同様の方法で動作するカスタムライブラリ(クラス)のrender_page()アイデアを使用してください。その後、そのライブラリを自動ロードし、必要なコントローラでrender_page()メソッドを使用します。

あなたは、このようなライブラリを作り、次のようViewmasterが、あなたは実装の詳細を把握するために、私はあなたにそれを残しておきます

public function index(){ 
    //do stuff including setting $data as needed 
    $this->viewmaster->render_page("some_view", $data); 
} 

を(それが自動的にロードされたと仮定し)コントローラでそれを使用することになり、それを命名した場合Viewmasterクラスの

+0

この関数内でフォーム検証を処理できますか?私は、ログインコントローラにアクションを指し示している "トップビュー"内にフォームを提出しようとしました。しかし、それは定義されていないというform_validationメソッドを痛感しました。 –

+0

いいえ、フォームの検証はこの関数では起こりません。その目的は、ページを構成する複数のビューファイルを収集して表示することだけです。ただし、検証を処理する関数の内部で 'render_page()'を使用します。検証設定については、[設定ファイルの使用に関するドキュメント](http://www.codeigniter.com/user_guide/libraries/form_validation.html#saving-sets-of-validation-rules-to-a-config-file)をお読みください。 ) – DFriend

+0

このポストの主な問題はビューの設定自体ではなく、ページを設定するたびに同じフォーム検証コードを書く必要がありました。 –

関連する問題