1

CI を使用するのは初めてで、質問があります。設計方法の提案のようなものです。静的ページのベース テンプレートを作成したいと考えています。基本的に、doc の種類、head、および body をロードしたいのですが、それ以外は何もロードしません。URL経由で呼び出すクラス/関数によってコンテンツがロードされるようにします。HTML テンプレートと str_replace() を使用してこれを実行できることはわかっていますが、もっと良い方法や、私がよく知らない凝った CI メソッドはありますか?

これが私がこれまでに持っていたもので、動作しますが、最高ではありません。

class Sandbox extends CI_Controller {

    public function __construct() {
        parent::__construct();
        //echo "hello world?"; 
    }

    public function load($what){
        if ($what == 'something'){

            if (!file_exists('application/views/content/'.$what.'.php')){
                // Whoops, we don't have a page for that!
                show_404();
            }
            $data = array();
            $this->load->view('templates/header', $data);
            $this->load->view('content/'.$what, $data);
            $this->load->view('templates/footer', $data);
        }
        else { // Default load

            $data = array();
            $data['message'] = 'Hello World';
            //$this->load->view('templates/header', $data);
            $this->load->view('content/sandbox', $data);
            //$this->load->view('templates/footer', $data);
        }
    }
}

ビュー メソッドをロードすると動作するように見えますが、doctype と head をテンプレートに追加する必要がありました。複数のヘッダーを作成する必要がないように、それらを個別にロードすることをお勧めします。私が探しているのは、ページの一部と、その特定のページに必要なスクリプト/css を具体的にロードする方法です。

アドバイスをありがとう。

4

1 に答える 1

0

コントローラー内の関数名は、URL への参照です。

www.ci.com/sandbox/load

上記の URL はfunction load()、サンドボックス コントローラー内に読み込まれます。

テンプレートを作成するには、必要な基本を含むビューを作成し、コンテンツをそのビューに渡すだけです。

function home(){
$data['content'] = $this->load->view('home_content',,TRUE);
this->load->view('template', $data)
}

3 番目の引数で使用TRUEすると、データを表示するのではなく、データを返します。

次に、テンプレートファイルでecho $content; 、同じ方法を使用して、テンプレートに含める個別のヘッドファイルとその他のファイルを作成することもできます。

function home(){
$data['content'] = $this->load->view('home_content',,TRUE);
$data['head'] = $this->load->view('head',,TRUE);
this->load->view('template', $data);
}

次のように、返すビューにデータ変数を渡すこともできます。

$data['content'] = $this->load->view('home_content',,TRUE);
$data['admin_script'] = $this->load->view('admin_script',,TRUE);
$data['head'] = $this->load->view('head',$data,TRUE);

これが役立つことを願っています!:)

また

別のページをロードしたい場合は、別の関数を作成し、新しいルーティング ルールを作成する必要があります: Codeigniter: URI ROUTING

于 2013-07-08T16:46:14.943 に答える