Compiling Blade Templates from Strings
It is possible to compile blade templates from strings rather than relying on view files. To do this, you can extend the existing BladeCompiler class and implement a custom method.
Extended BladeCompiler Class
<code class="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); // Include view contents for parsing within a catcher try { eval('?>'.$generated); } // Silent flush output buffer in case of exception catch (\Exception $e) { ob_get_clean(); throw $e; } $content = ob_get_clean(); return $content; } }</code>
Usage
You can use the extended compileWiths method to compile blade templates from strings:
<code class="php">$string = '<h2>{{ $name }}</h2>'; $compiled = BladeCompiler::compileWiths($string, array('name' => 'John Doe')); echo $compiled;</code>
The above is the detailed content of How to Compile Blade Templates from Strings in Laravel?. For more information, please follow other related articles on the PHP Chinese website!