从字符串编译刀片模板
可以从字符串编译刀片模板,而不是依赖视图文件。为此,您可以扩展现有的 BladeCompiler 类并实现自定义方法。
扩展 BladeCompiler 类
<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>
用法
您可以使用扩展的compileWiths方法从字符串编译刀片模板:
<code class="php">$string = '<h2>{{ $name }}</h2>'; $compiled = BladeCompiler::compileWiths($string, array('name' => 'John Doe')); echo $compiled;</code>
以上是如何在 Laravel 中从字符串编译 Blade 模板?的详细内容。更多信息请关注PHP中文网其他相关文章!