-1

mvc Codeigniter で書かれたサイトがあります。たとえば、メニューが多くのページで繰り返され、すべて同じであるため、特定の位置のビュー内で別のビューを呼び出す必要があります。

私のコントローラーでは、これを書いています:

public function home()
    {
      $data['menu_function'] = $this->load->view('backend/include/menu_function_view');
      $data['menu'] = $this->load->view('backend/include/menu_view');
      $this->load->view('backend/include/header_view_logged');
      $this->load->view('backend/home_view',$data);
      $this->load->view('backend/include/footer_view');
    }

そして私のhome_viewに

<?php 
echo($menu_function);
?>
<div id="page">
    <?php 
    echo($menu);
    ?>
     <div id="content">
....

問題は、$menu 内のコンテンツがフォーム ページから外れていることです。firebug では、html は次のようになっていることがわかりました。

<div id="menu">
...
</div>
   <div id="page">
    ...
   </div>

それ以外の:

<div id="page">
     <div id="menu">
      ...
     </div>
   </div>

どうすれば解決できますか?

4

1 に答える 1

1

これが最善のアプローチかどうかはわかりませんが、通常、ビューをロードするテンプレート ファイルを作成するために使用します。ここに基本的な考え方:

フォルダー ビューで、以下を含むファイル template.php を作成します。

$this->load->view('includes/header');
$this->load->view( $main_content );
$this->load->view('includes/footer');

次に、以下を含むフォルダー ビュー/インクルードを作成します。

ファイルheader.php and footer.php

コントローラーで私は呼び出します:

$data['main_content'] = 'user/dashboard';
$this->load->view('template', $data);

編集: メニューの問題

$menu_config のようなデータをヘッダーまたはビュー テンプレートに渡します。

header.php

<html>
<head>
    <title>$title</title>
</head>
<body>

<?php 
    if($menu_position == 'top1') { 
        $this->load->view($menu);
    }
?>

コントローラー上:

$data['main_content'] = 'user/dashboard';
$data['menu'] = 'top_menu';
$data['menu_position'] = 'top1';
$this->load->view('template', $data);
于 2012-11-30T14:15:17.143 に答える