How can I compile a blade template from a string rather than a view file, like the code below:
<?php $string = '<h2>{{ $name }}</h2>'; echo Blade::compile($string, array('name' => 'John Doe')); ?>
http://paste.laravel.com/ujL
Yes you can use it where ever you like.
Blade is the simple, yet powerful templating engine that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates.
I found the solution by extending BladeCompiler.
<?php namespace Laravel\Enhanced; use Illuminate\View\Compilers\BladeCompiler as LaravelBladeCompiler; class BladeCompiler extends LaravelBladeCompiler { /** * Compile blade template with passing arguments. * * @param string $value HTML-code including blade * @param array $args Array of values used in blade * @return string */ public function compileWiths($value, array $args = array()) { $generated = parent::compileString($value); ob_start() and extract($args, EXTR_SKIP); // We'll include the view contents for parsing within a catcher // so we can avoid any WSOD errors. If an exception occurs we // will throw it out to the exception handler. try { eval('?>'.$generated); } // If we caught an exception, we'll silently flush the output // buffer so that no partially rendered views get thrown out // to the client and confuse the user with junk. catch (\Exception $e) { ob_get_clean(); throw $e; } $content = ob_get_clean(); return $content; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With