2011-09-10 10 views
7

私自身のMVCフレームワークを使っています。以下は私がこれまで持っていたコントローラーの例です。メインテンプレートファイルにMVCビューを読み込む方法

私はコントローラをモデルにロードしてファイルを表示する方法もあります。

私のサイトには、さまざまなテンプレートオプションも用意したいと考えています。私のテンプレートは、自分のコントローラから作成されたビューをテンプレートファイルの中央に挿入するページレイアウトになります。 AJAXは

EmptyLayout.php 

<?php 
$content 
?> 

を呼び出すために任意のヘッダー、フッター、何かせずに

/** 
* Example Controller 
*/ 
class User_Controller extends Core_Controller { 

    // domain.com/user/id-53463463 
    function profile($userId) 
    { 
     // load a Model 
     $this->loadModel('profile'); 

     //GET data from a Model 
     $profileData = $this->profile_model->getProfile($userId); 

     // load view file and pass the Model data into it 
     $this->view->load('userProfile', $profileData); 
    } 

} 

ここでは、テンプレートファイルの基本的な考え方です...

DefaultLayout.php 

<!doctype html> 
<html lang="en"> 
<head> 
</head> 
<body> 



Is the controller has data set for the sidebar variable, then we will load the sidebar and the content 
<?php if(! empty($sidebar)) { ?> 

<?php print $content; ?> 

<?php print $sidebar; ?> 


If no sidebar is set, then we will just load the content 
<?php } else { ?> 

<?php print $content; ?> 

<?php } ?> 

</body> 
</html> 

別のテンプレートを使用することができ、メインテンプレートファイルを読み込んでメインレイアウトファイルのコンテンツ領域にファイルを含めたり表示したりする方法についてアイデアを探していますか?

サンプルレイアウトファイルでは、コンテンツ領域に$ contentという変数があることがわかります。私はどのように私はビューのコンテンツを、私のメインレイアウトテンプレートに挿入するには、それを設定することができないか分からない。あなたが任意のアイデアを持っている場合は、少し

function loadView ($strViewPath, $arrayOfData) 
{ 
// This makes $arrayOfData['content'] turn into $content 
extract($arrayOfData); 

// Require the file 
ob_start(); 
require($strViewPath); 

// Return the string 
$strView = ob_get_contents(); 
ob_end_clean(); 
return $strView; 
} 

状試料を投稿してください

答えて

12

何かが続いて/これは素晴らしいですが、私はいつも、コントローラ内のコンテンツの出力をフォーマットし、設定

$sidebarView = loadView('sidebar.php', array('stuff' => 'for', 'sidebar' => 'only'); 
$mainView = loadView('main.php', array('content' => 'hello',, 'sidebar' => $sidebarView); 
+0

で使用しますモデルを作成し、 'file_get_contents'を使用して、ビュー内のプレースホルダを置き換えます。例えば、'

{content}

'とstr_replaceを置き換えます。いい物 –