vista - Código PHP dentro de Laravel 5 Blade Template
que es el motor de plantillas blade (4)
El nuevo NewBladeCompiler siguiente usará @{ }}
para aceptar todos los códigos php como asignación de variables, declaración de clase, etc., por ejemplo, @{ $variable = 0; }}
@{ $variable = 0; }}
se compilará a <?php $variable=0; ?>
<?php $variable=0; ?>
<?php
use Illuminate/View/Compilers/BladeCompiler;
class NewBladeCompiler extends BladeCompiler
{
/**
* Get the echo methods in the proper order for compilation.
*
* @return array
*/
function getEchoMethods()
{
$methods = [
''compileRawEchos'' => strlen(stripcslashes($this->rawTags[0])),
''compileEscapedEchos'' => strlen(stripcslashes($this->escapedTags[0])),
''compileRegularEchos'' => strlen(stripcslashes($this->contentTags[0])),
''compilePhpEchos'' => strlen(stripcslashes("@{"))
];
uksort($methods, function ($method1, $method2) use ($methods) {
// Ensure the longest tags are processed first
if( $methods[$method1] > $methods[$method2] )
{
return -1;
}
if( $methods[$method1] < $methods[$method2] )
{
return 1;
}
// Otherwise give preference to raw tags (assuming they''ve overridden)
if( $method1 === ''compilePhpEchos'' )
{
return -1;
}
if( $method2 === ''compilePhpEchos'' )
{
return 1;
}
if( $method1 === ''compileRawEchos'' )
{
return -1;
}
if( $method2 === ''compileRawEchos'' )
{
return 1;
}
if( $method1 === ''compileEscapedEchos'' )
{
return -1;
}
if( $method2 === ''compileEscapedEchos'' )
{
return 1;
}
});
return $methods;
}
function compilePhpEchos( $value )
{
$pattern = sprintf(''/(@)?%s/s*(.+?)/s*%s(/r?/n)?/s'', "@{", "}}");
$callback = function ($matches) {
$whitespace = empty($matches[3]) ? '''' : $matches[3] . $matches[3];
return $matches[1] ? substr($matches[0], 1) : ''<?php '' . $matches[2] . '' ?>'' . $whitespace;
};
return preg_replace_callback($pattern, $callback, $value);
}
}
?>
Tengo que colocar algo de código PHP dentro de Laravel 5 Blade Template. Como abajo
@foreach ($farmer->tasks as $task)
@if ($task->pivot->due_at) < date(now))
$style = ''alert alert-danger'';
@elseif ($task->pivot->due_at) > date(now))
$style = ''alert alert-success'';
@else
$style = '''';
@endif
@endforeach
¿Cuál es el procedimiento real para colocar el código PHP dentro de Laravel 5 Blade Template?
Las recetas de Laravel sugieren una forma simple pero efectiva de hacerlo sin incluir las etiquetas php
{{--*/ $var = ''test'' /*--}}
{{- -}} funciona como un comentario blade / y / revierte el efecto del comentario resultante en
<?php $var = ''test'' ?>
El problema es que es más largo que incluir etiquetas php :-(
Según la documentation , en Laravel 5.2 y versiones posteriores, puede utilizar el siguiente código:
@php
{{-- php code here --}}
@endphp
Alternativamente, puede extender el motor de plantillas Blade como se describe here .
Si ninguna de las soluciones anteriores es adecuada, está atascado con las respuestas dadas por @Armen y @Gonzalo
Simplemente abra y cierre las etiquetas php: <?php $style = ''...''; ?>
<?php $style = ''...''; ?>