2011-09-10 17 views
7

Pracuję nad własną ramą MVC. Poniżej znajduje się przykładowy kontroler, jaki dotychczas miałem.Jak załadować widoki MVC do głównego pliku szablonu

Mam sposób ładowania modeli do kontrolera, a także przeglądania plików.

Chcę również mieć różne opcje szablonu dla mojej witryny. Mój szablon będzie po prostu układem strony, który wstawia widoki utworzone z mojego kontrolera do środka mojego pliku szablonu.

/** 
* 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); 
    } 

} 

Oto podstawowa idea pliku szablonu ...

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> 

innego szablonu bez nagłówka, stopki, cokolwiek innego, może być używany dla AJAX wzywa

EmptyLayout.php 

<?php 
$content 
?> 

Szukam pomysłów, w jaki sposób mogę załadować mój główny plik szablonu, a następnie włączyć i wyświetlić pliki w obszarze zawartości głównego pliku układu?

W przykładowym pliku układu widać, że obszar zawartości zawiera zmienną o nazwie $ content. Nie jestem pewien, w jaki sposób mogę wypełnić tę treść treścią widoku, która zostanie umieszczona w moim głównym szablonie układu. Jeśli masz jakieś pomysły, proszę pisać Przykładowe

Odpowiedz

12

Coś trochę jak

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; 
} 

następnie użyć z

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

To jest wielki, zawsze formatować i ustawić wyjście zawartość wewnątrz kontrolera/model następnie użyj 'file_get_contents', a następnie zastąp symbole zastępcze w widoku np .:'

{content}

'with str_replace. Dobry towar –

Powiązane problemy