-1

こんにちは私は何かについて質問があります。私はCIでウェブサイトを作成するのに忙しく、自分自身に問題/質問を克服しました。CIのナビゲーション用のコードはどこに配置しますか?コントローラーまたは常に含める1つのビューで?

4

2 に答える 2

1

アップデート

これは私がここに投稿する最後の応答です。

あなたはあなたのコントローラーにナビゲーションを持っていることに完全に固執しているので、あなたができることはここにあります。コントローラに配列としてデータをロードします。ナビゲーションに表示される各リンクをその配列の一部にします。データをビュー(理想的には、前に説明したtemplate.phpビュー)に渡し、配列をforeachループで実行します。

5行のコードしかないので、ナビゲーション用に完全に別個のビューファイルを作成したくないので、それをテンプレートファイルに配置します。したがって、テンプレートは次のようになります。

<head>
    <?php $this->load->view('elements/head'); ?>
</head>
<header>
    <ul>
        <?php foreach($menus as $menu): ?>
            <li><a href='<?php print $menu["url"] ?>'><?php print $menu["title"] ?></a></li>
        <?php endforeach; ?>
    </ul>
</header>
<body>
    <div class="content">
        <?php $this->load->view($content); ?>
    </div>
</body>
<footer>
    <?php $this->load->view('elements/footer'); ?>
</footer>

とはいえ、このデータを実際にコントローラーにエコーすることはMVCパターンに反します。コントローラでデータを宣言できますが、ビューにロードする必要があります。

また、この質問この質問、さらにはこの質問はすべて、個別のナビゲーションビューが最適であることに同意しています。


私は通常、すべてのページに含まれているデフォルトの「template.php」ビューを持っています。内部のコンテンツは動的に読み込まれます。

この場合、ナビゲーションを「header.php」ビューファイルに入れ(ナビゲーションが一番上にあると想定)、それを「template.php」ビューにロードすることをお勧めします。これにより、コードのブロックが分離され、後でナビゲーションだけを簡単に変更できるようになります。テンプレートファイルは次のようになります。

<head>
    <?php $this->load->view('elements/head'); ?>
</head>
<header>
    <?php $this->load->view('elements/header'); ?>
</header>
<body>
    <div class="content">
        <?php $this->load->view($content); ?>
    </div>
</body>
<footer>
    <?php $this->load->view('elements/footer'); ?>
</footer>
于 2013-03-19T15:20:11.023 に答える
1

通常、私のナビゲーションはWebサイトの上部にあるため、すべてのhtml、header、metaタグを使用してheader.phpを作成します。次に、bodyタグの後に、ナビゲーションに必要なコードがあります。

いくつかの変数を渡すか、URIセグメントを使用して現在のページを検索できるため、stackoverflowのナビゲーションと同じように、ナビゲーションを強調表示できます。現在、[質問]セクションが強調表示されています。

テンプレートビューを作成できます。コントローラーで次のようにします。

public function index(){
    $data['title'] = 'Site title'
    $data['current_page'] = 'Home'
    //the view you want to load
    $data['view'] = 'home';
    //loads the vars across all views
    $this->load->vars($data);
    //loads the view wich will have our template
    $this->load->view('template');
}

これで、ビューテンプレートは次のようになります。左の列などがある場合は、必要に応じてレイアウトを変更できることを忘れないでください。

<?php 
$this->load->view('header');
//this is the view we loaded on our controller
$this->load->view($view);
$this->load->view('footer');
?>

たとえば、ビューヘッダーにはナビゲーションシステムがあり、変数current_pageを使用してホームのメニューアンカーを強調表示し、title変数を使用してページ全体に動的なタイトルを付けています。

于 2013-03-19T15:28:10.467 に答える