From 27d42308ed3c370b943b7c9db27dd4f4eaf685a6 Mon Sep 17 00:00:00 2001 From: Andreas Lutro Date: Tue, 3 Jun 2014 18:27:19 +0200 Subject: [PATCH] make OptimizeCommand compile views --- .../Foundation/Console/OptimizeCommand.php | 31 +++++++++++++++++++ src/Illuminate/View/Factory.php | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Foundation/Console/OptimizeCommand.php b/src/Illuminate/Foundation/Console/OptimizeCommand.php index 599332e92ba4..79c2cb3cfcb1 100644 --- a/src/Illuminate/Foundation/Console/OptimizeCommand.php +++ b/src/Illuminate/Foundation/Console/OptimizeCommand.php @@ -2,6 +2,7 @@ use Illuminate\Console\Command; use Illuminate\Foundation\Composer; +use Illuminate\View\Engines\CompilerEngine; use ClassPreloader\Command\PreCompileCommand; use Symfony\Component\Console\Input\InputOption; @@ -64,6 +65,10 @@ public function fire() $this->info('Compiling common classes'); $this->compileClasses(); + + $this->info('Compiling views'); + + $this->compileViews(); } else { @@ -113,6 +118,32 @@ protected function registerClassPreloaderCommand() $this->getApplication()->add(new PreCompileCommand); } + /** + * Compile all view files. + * + * @return void + */ + protected function compileViews() + { + $paths = $this->laravel['view']->getFinder() + ->getPaths(); + + foreach ($paths as $dir) + { + $files = $this->laravel['files']->allFiles($dir); + + foreach ($files as $path) + { + $engine = $this->laravel['view']->getEngineFromPath($path); + + if ($engine instanceof CompilerEngine) + { + $engine->getCompiler()->compile($path); + } + } + } + } + /** * Get the console command options. * diff --git a/src/Illuminate/View/Factory.php b/src/Illuminate/View/Factory.php index 149b8d7062a1..b6e27d6c9c65 100755 --- a/src/Illuminate/View/Factory.php +++ b/src/Illuminate/View/Factory.php @@ -247,7 +247,7 @@ public function renderEach($view, $data, $iterator, $empty = 'raw|') * @param string $path * @return \Illuminate\View\Engines\EngineInterface */ - protected function getEngineFromPath($path) + public function getEngineFromPath($path) { $engine = $this->extensions[$this->getExtension($path)];