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.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.extension - View template file extension. (default: .php)
# 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('view', '\flight\template\View', array(), function($view) use ($self) {
$view->path = $self->get('flight.views.path');
$view->extension = $self->get('flight.views.extension');
});
// Register framework methods
@ -107,6 +108,7 @@ class Engine {
$this->set('flight.handle_errors', true);
$this->set('flight.log_errors', false);
$this->set('flight.views.path', './views');
$this->set('flight.views.extension', '.php');
$initialized = true;
}

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

@ -16,13 +16,13 @@ class ViewTest extends PHPUnit_Framework_TestCase
*/
private $view;
function setUp(){
function setUp() {
$this->view = new \flight\template\View();
$this->view->path = __DIR__.'/views';
}
// Set template variables
function testVariables(){
function testVariables() {
$this->view->set('test', 123);
$this->assertEquals(123, $this->view->get('test'));
@ -36,22 +36,41 @@ class ViewTest extends PHPUnit_Framework_TestCase
}
// Check if template files exist
function testTemplateExists(){
function testTemplateExists() {
$this->assertTrue($this->view->exists('hello.php'));
$this->assertTrue(!$this->view->exists('unknown.php'));
}
// Render a template
function testRender(){
function testRender() {
$this->view->render('hello', array('name' => 'Bob'));
$this->expectOutputString('Hello, Bob!');
}
// Fetch template output
function testFetch(){
function testFetch() {
$output = $this->view->fetch('hello', array('name' => 'Bob'));
$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