Added support for custom template file extensions.

pull/226/head v1.2.17
Mike Cao 9 years ago
parent 7fd3594ac7
commit cabbb25fcc

@ -828,6 +828,7 @@ The following is a list of all the available configuration settings:
flight.handle_errors - Allow Flight to handle all errors internally. (default: true) flight.handle_errors - Allow Flight to handle all errors internally. (default: true)
flight.log_errors - Log errors to the web server's error log file. (default: false) flight.log_errors - Log errors to the web server's error log file. (default: false)
flight.views.path - Directory containing view template files. (default: ./views) flight.views.path - Directory containing view template files. (default: ./views)
flight.views.extension - View template file extension. (default: .php)
# Framework Methods # Framework Methods

@ -1 +1 @@
1.2.16 1.2.17

@ -90,6 +90,7 @@ class Engine {
$this->loader->register('router', '\flight\net\Router'); $this->loader->register('router', '\flight\net\Router');
$this->loader->register('view', '\flight\template\View', array(), function($view) use ($self) { $this->loader->register('view', '\flight\template\View', array(), function($view) use ($self) {
$view->path = $self->get('flight.views.path'); $view->path = $self->get('flight.views.path');
$view->extension = $self->get('flight.views.extension');
}); });
// Register framework methods // Register framework methods
@ -107,6 +108,7 @@ class Engine {
$this->set('flight.handle_errors', true); $this->set('flight.handle_errors', true);
$this->set('flight.log_errors', false); $this->set('flight.log_errors', false);
$this->set('flight.views.path', './views'); $this->set('flight.views.path', './views');
$this->set('flight.views.extension', '.php');
$initialized = true; $initialized = true;
} }

@ -21,6 +21,13 @@ class View {
*/ */
public $path; public $path;
/**
* File extension.
*
* @var string
*/
public $extension = '.php';
/** /**
* View variables. * View variables.
* *
@ -151,17 +158,18 @@ class View {
* @return string Template file location * @return string Template file location
*/ */
public function getTemplate($file) { public function getTemplate($file) {
if ((substr($file, -4) != '.php')) { $ext = $this->extension;
$file .= '.php';
if (!empty($ext) && (substr($file, -1 * strlen($ext)) != $ext)) {
$file .= $ext;
} }
if ((substr($file, 0, 1) == '/')) { if ((substr($file, 0, 1) == '/')) {
return $file; return $file;
} }
else
{
return $this->path.'/'.$file; return $this->path.'/'.$file;
} }
}
/** /**
* Displays escaped output. * Displays escaped output.

@ -54,4 +54,23 @@ class ViewTest extends PHPUnit_Framework_TestCase
$this->assertEquals('Hello, Bob!', $output); $this->assertEquals('Hello, Bob!', $output);
} }
// Default extension
function testTemplateWithExtension() {
$this->view->set('name', 'Bob');
$this->view->render('hello.php');
$this->expectOutputString('Hello, Bob!');
}
// Custom extension
function testTemplateWithCustomExtension() {
$this->view->set('name', 'Bob');
$this->view->extension = '.html';
$this->view->render('world');
$this->expectOutputString('Hello world, Bob!');
}
} }

@ -0,0 +1 @@
Hello world, <?php echo $name; ?>!
Loading…
Cancel
Save