Improve the @layout blade expression, allow dynamic specification of templates.
This commit is contained in:
parent
e8e7db687c
commit
91998735b9
|
@ -119,9 +119,9 @@ protected static function compile_layouts($value)
|
||||||
// be located on the first line of the template contents.
|
// be located on the first line of the template contents.
|
||||||
$lines = preg_split("/(\r?\n)/", $value);
|
$lines = preg_split("/(\r?\n)/", $value);
|
||||||
|
|
||||||
$layout = static::extract($lines[0], '@layout');
|
$pattern = static::matcher('layout');
|
||||||
|
|
||||||
$lines[] = "<?php echo render('{$layout}'); ?>";
|
$lines[] = preg_replace($pattern, '$1@include$2', $lines[0]);
|
||||||
|
|
||||||
// We will add a "render" statement to the end of the templates and
|
// We will add a "render" statement to the end of the templates and
|
||||||
// and then slice off the @layout shortcut from the start so the
|
// and then slice off the @layout shortcut from the start so the
|
||||||
|
@ -137,7 +137,7 @@ protected static function compile_layouts($value)
|
||||||
*/
|
*/
|
||||||
protected static function extract($value, $expression)
|
protected static function extract($value, $expression)
|
||||||
{
|
{
|
||||||
preg_match('/'.$expression.'(\s*\(.*\))(\s*)/', $value, $matches);
|
preg_match('/@layout(\s*\(.*\))(\s*)/', $value, $matches);
|
||||||
|
|
||||||
return str_replace(array("('", "')"), '', $matches[1]);
|
return str_replace(array("('", "')"), '', $matches[1]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue