Tweak controller layout resolution.

Signed-off-by: Taylor Otwell <taylorotwell@gmail.com>
This commit is contained in:
Taylor Otwell 2012-03-05 13:31:30 -06:00
parent 2b81497644
commit 8da1c16c8b
1 changed files with 18 additions and 12 deletions

View File

@ -46,6 +46,22 @@ abstract class Controller {
*/ */
const factory = 'laravel.controller.factory'; const factory = 'laravel.controller.factory';
/**
* Create a new Controller instance.
*
* @return void
*/
public function __construct()
{
// If the controller has specified a layout to be used when rendering
// views, we will instantiate the layout instance and set it to the
// layout property, replacing the string layout name.
if ( ! is_null($this->layout))
{
$this->layout = $this->layout();
}
}
/** /**
* Call an action method on a controller. * Call an action method on a controller.
* *
@ -141,22 +157,12 @@ public static function resolve($bundle, $controller)
// by convention out of the bundle's controller directory. // by convention out of the bundle's controller directory.
if (Event::listeners(static::factory)) if (Event::listeners(static::factory))
{ {
$controller = Event::first(static::factory, $controller); return Event::first(static::factory, $controller);
} }
else else
{ {
$controller = new $controller; return new $controller;
} }
// If the controller has specified a layout to be used when rendering
// views, we will instantiate the layout instance and set it to the
// layout property, replacing the string layout name.
if ( ! is_null($controller->layout))
{
$controller->layout = $controller->layout();
}
return $controller;
} }
/** /**