Je dois placer du code PHP à l'intérieur Laravel) 5 Blade Template. Comme ci-dessous
@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
Quelle est la procédure à suivre PHP code à l'intérieur Laravel 5 modèles de lame?]
Selon documentation , dans Laravel 5.2 et plus récent, vous pouvez utiliser le code suivant:
@php
{{-- php code here --}}
@endphp
Alternativement, vous pouvez étendre le moteur de gabarit de lame comme décrit ici .
Si aucune des solutions ci-dessus ne convient, vous êtes pris avec les réponses données par @Armen et @Gonzalo
Il suffit d'ouvrir et de fermer les balises php: <?php $style = '...'; ?>
Les recettes de Laravel suggèrent un moyen simple mais efficace de le faire sans inclure les balises php
{{--*/ $var = 'test' /*--}}
{{- -}} fonctionne comme un commentaire de lame / et / inverse l'effet de commentaire résultant
<?php $var = 'test' ?>
Le problème est que c'est plus long que d'inclure des balises php :-(
Le nouveau NewBladeCompiler suivant utilisera @{ }}
pour accepter tous les codes php tels que l’assignation de variables, la déclaration de classe, etc. @{ $variable = 0; }}
sera compilé pour <?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);
}
}
?>