@ -12,10 +12,10 @@ class Minz_View {
const LAYOUT_PATH_NAME = '/layout';
const LAYOUT_FILENAME = '/layout.phtml';
private $base_pathname = APP_PATH;
private $view_filename = '';
private $use_layout = null;
private static $base_pathnames = array(APP_PATH);
private static $title = '';
private static $styles = array ();
private static $scripts = array ();
@ -41,8 +41,15 @@ class Minz_View {
. $action_name . '.phtml';
}
public function setBasePathname($base_pathname) {
$this->base_pathname = $base_pathname;
/**
* Add a base pathname to search views.
*
* New pathnames will be added at the beginning of the list.
*
* @param $base_pathname the new base pathname.
*/
public static function addBasePathname($base_pathname) {
array_unshift(self::$base_pathnames, $base_pathname);
}
/**
@ -74,7 +81,20 @@ class Minz_View {
* Affiche la Vue en elle-même
*/
public function render () {
if ((include($this->base_pathname . $this->view_filename)) === false) {
$view_found = false;
// We search the view in the list of base pathnames. Only the first view
// found is considered.
foreach (self::$base_pathnames as $base) {
$filename = $base . $this->view_filename;
if (file_exists($filename)) {
include $filename;
$view_found = true;
break;
}
}
if (!$view_found) {
Minz_Log::notice('File not found: `' . $this->view_filename . '`');
}
}