異なるディレクトリにある同様のフォーム用にCodeIgniterコントローラーをセットアップする方法

prikkles

CodeIgniterを使用してさまざまなフォームタイプにアクセスしています

私はこのようなディレクトリを持っています:

-views
--resources
---app1
----form.php
---app2
----form.php
---app3
----form.php
---app4
----form.php

私のクラスは現在非常に基本的ですが、これは

class Resources extends CI_Controller {

        public function app1($page = '')
        {
                $data['title'] = ucfirst($folder); // Capitalize the first letter

                $this->load->view('templates/header', $data);
                $this->load->view('resources/app1/form.php', $data);
                $this->load->view('templates/footer', $data);


        }

        public function app2($page = '')
        {
                $data['title'] = ucfirst($folder); // Capitalize the first letter

                $this->load->view('templates/header', $data);
                $this->load->view('resources/app2/form.php', $data);
                $this->load->view('templates/footer', $data);


        }

}

これは非常に冗長であり、すべてのフォームにメソッドを用意する必要はありません。ただし、新しいメソッドを作成せずにディレクトリを変更する方法が見つかりません。理想的には、$ pageのような引数として新しいディレクトリを渡すことができるメソッドが必要です。例えば:

class Resources extends CI_Controller {

        public function view($page = '')
        {
                $data['title'] = ucfirst($folder); // Capitalize the first letter

                $this->load->view('templates/header', $data);
                $this->load->view('resources/'. $folder. '/form.php', $data);
                $this->load->view('templates/footer', $data);


        }

}

ただし、CodeIgniterではこれが許可されていないようです。誰かがこれが機能する方法を提案できますか?

シェリフサラ

実際にできます。

フォルダbase_controller内に作成してcore呼び出し、MY_Controller.php拡張CI_Controllerしてメソッドを作成し、任意のMY_Controller名前を付けrender, render_view, viewます。その関数内で、パーシャルとテンプレートをレイアウトし、ビューを渡すだけです。application/core/MY_Controller.php

class MY_Controller extends CI_Controller {

    protected $data = array();

    public function render_view($view = '')
    {
            $this->load->view('templates/header', $this->data);
            $this->load->view('view_path/'. $view, $this->data);
            $this->load->view('templates/footer', $this->data);
    }
}

そして、あなたのアプリケーション内のすべてのコントローラのためにそれを拡張させるMY_Controllerと、ビューの使用をレンダリングしたい時はいつでもrender_view($view)、あなたはあなただheaderfooterプリロードし、それはそれDRYを作る最も簡単な方法です。

最後に、コントローラーでは次のようになります。

class Resources extends CI_Controller {

    public function app1($page = '')
    {
            // $data array in my_controller, it will automatically be passed inside render_view
            $this->data['title'] = ucfirst($folder); // Capitalize the first letter
            $this->render_view('app1/form');
    }

    public function app2($page = '')
    {
            $this->data['title'] = ucfirst($folder); // Capitalize the first letter
            $this->render_view('app2/form');
    }

}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ブートストラップフォームコントロールのパディングを0ピクセルに設定する方法

分類Dev

クロスプラットフォームアプリケーション用のXamarinFormsのsqliteデータベースに画像を保存する方法は?

分類Dev

.NET Core1.1でアプリケーションデータのディレクトリを取得するクロスプラットフォームの方法

分類Dev

クロスプラットフォームのモバイルアプリを開発するためのelectronJSと同様のフレームワーク

分類Dev

フォルダ/ディレクトリを作成するクロスプラットフォームの方法?

分類Dev

2つの異なるディレクトリにある同じコントローラ名

分類Dev

ターミナルを開くが、デフォルトのホームとは異なるディレクトリの下にあるデスクトップの「ショートカット」を作成するにはどうすればよいですか?

分類Dev

シングル/クロスプラットフォーム開発用にJenkinsCIクラスターをセットアップする方法は?

分類Dev

Rのデータフレームの2つの異なる列にある特定の量のエントリをランダムにスワップする

分類Dev

異なる行(データフレーム)のグラフを組み合わせて、Rの同じグラフにプロットする方法は?

分類Dev

Pythonで一時ディレクトリを取得するクロスプラットフォームの方法

分類Dev

角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

分類Dev

Reduxフォーム:ラップされたコンポーネントの外側からFieldArrayフィールドプロップにアクセスする

分類Dev

複数のフォームの1つをエディターテンプレートからコントローラーアクションに送信する

分類Dev

異なるポートでリバースプロキシの背後にあるユーレカクライアントをセットアップする方法

分類Dev

あるデータフレームを別のデータフレームに挿入した後にインデックスをリセットする方法

分類Dev

アセット フォルダーのサブディレクトリを外部ストレージの特定のフォルダーにコピーする

分類Dev

異なるデータフレームデータを1つの図にプロットする方法は?

分類Dev

Linuxのように現在のユーザーのホームディレクトリにアクセスするためのショートカットコマンドがWindowsコマンドプロンプトにありますか?

分類Dev

openUi5のランチパッドの一般的なタイルと同様の概念をクリックしたときにプロジェクトに異なるコンポーネントをロードする

分類Dev

同じプロジェクトのEclipseで異なるソースフォルダーに異なるコンパイラレベルを設定する

分類Dev

オプションクリックでコントロールのプロパティを変更するときに、ポップアップフォームコントロールの背景色が白く点滅しないようにする

分類Dev

オプションクリックでコントロールのプロパティを変更するときに、ポップアップフォームコントロールの背景色が白く点滅しないようにする

分類Dev

同じディレクトリ(アプリケーションディレクトリではない)にDLLをランタイムロードする

分類Dev

クライアントブラウザからのPOSTリクエストを受け付けているフロントエンドサーバーからバックエンドサーバー(アップロード用)にファイルを送信する方法(フォームデータ->ファイル入力)?

分類Dev

クライアントブラウザからのPOSTリクエストを受け付けているフロントエンドサーバーからバックエンドサーバー(アップロード用)にファイルを送信する方法(フォームデータ->ファイル入力)?

分類Dev

すべての行を異なるグラフにプロットする-データフレーム

分類Dev

vscodeのインストールセットアップと同様に、私のエレクトロンアプリからインストーラーを作成するにはどうすればよいですか?

分類Dev

kafkaストリームバインダーを使用したSpringクラウドストリーム:ストリームプロセッサ用に `trusted.packages`を設定する方法(コンシューマーやプロデューサーとは異なります)

Related 関連記事

  1. 1

    ブートストラップフォームコントロールのパディングを0ピクセルに設定する方法

  2. 2

    クロスプラットフォームアプリケーション用のXamarinFormsのsqliteデータベースに画像を保存する方法は?

  3. 3

    .NET Core1.1でアプリケーションデータのディレクトリを取得するクロスプラットフォームの方法

  4. 4

    クロスプラットフォームのモバイルアプリを開発するためのelectronJSと同様のフレームワーク

  5. 5

    フォルダ/ディレクトリを作成するクロスプラットフォームの方法?

  6. 6

    2つの異なるディレクトリにある同じコントローラ名

  7. 7

    ターミナルを開くが、デフォルトのホームとは異なるディレクトリの下にあるデスクトップの「ショートカット」を作成するにはどうすればよいですか?

  8. 8

    シングル/クロスプラットフォーム開発用にJenkinsCIクラスターをセットアップする方法は?

  9. 9

    Rのデータフレームの2つの異なる列にある特定の量のエントリをランダムにスワップする

  10. 10

    異なる行(データフレーム)のグラフを組み合わせて、Rの同じグラフにプロットする方法は?

  11. 11

    Pythonで一時ディレクトリを取得するクロスプラットフォームの方法

  12. 12

    角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

  13. 13

    Reduxフォーム:ラップされたコンポーネントの外側からFieldArrayフィールドプロップにアクセスする

  14. 14

    複数のフォームの1つをエディターテンプレートからコントローラーアクションに送信する

  15. 15

    異なるポートでリバースプロキシの背後にあるユーレカクライアントをセットアップする方法

  16. 16

    あるデータフレームを別のデータフレームに挿入した後にインデックスをリセットする方法

  17. 17

    アセット フォルダーのサブディレクトリを外部ストレージの特定のフォルダーにコピーする

  18. 18

    異なるデータフレームデータを1つの図にプロットする方法は?

  19. 19

    Linuxのように現在のユーザーのホームディレクトリにアクセスするためのショートカットコマンドがWindowsコマンドプロンプトにありますか?

  20. 20

    openUi5のランチパッドの一般的なタイルと同様の概念をクリックしたときにプロジェクトに異なるコンポーネントをロードする

  21. 21

    同じプロジェクトのEclipseで異なるソースフォルダーに異なるコンパイラレベルを設定する

  22. 22

    オプションクリックでコントロールのプロパティを変更するときに、ポップアップフォームコントロールの背景色が白く点滅しないようにする

  23. 23

    オプションクリックでコントロールのプロパティを変更するときに、ポップアップフォームコントロールの背景色が白く点滅しないようにする

  24. 24

    同じディレクトリ(アプリケーションディレクトリではない)にDLLをランタイムロードする

  25. 25

    クライアントブラウザからのPOSTリクエストを受け付けているフロントエンドサーバーからバックエンドサーバー(アップロード用)にファイルを送信する方法(フォームデータ->ファイル入力)?

  26. 26

    クライアントブラウザからのPOSTリクエストを受け付けているフロントエンドサーバーからバックエンドサーバー(アップロード用)にファイルを送信する方法(フォームデータ->ファイル入力)?

  27. 27

    すべての行を異なるグラフにプロットする-データフレーム

  28. 28

    vscodeのインストールセットアップと同様に、私のエレクトロンアプリからインストーラーを作成するにはどうすればよいですか?

  29. 29

    kafkaストリームバインダーを使用したSpringクラウドストリーム:ストリームプロセッサ用に `trusted.packages`を設定する方法(コンシューマーやプロデューサーとは異なります)

ホットタグ

アーカイブ