LARAVEL 5.5 ET PLUS
La directive lame @php n'accepte plus les balises en ligne. Utilisez plutôt la forme complète de la directive:
@php
$i = 1
@endphp
LARAVEL 5.2 ET PLUS
Vous pouvez simplement utiliser:
@php ($i = 1)
Ou vous pouvez l'utiliser dans une instruction de bloc:
@php
$i = 1
@endphp
LARAVEL 5
Étendez Blade comme ceci:
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @define $variable = "whatever"
| </code>
|--------------------------------------------------------------------------
*/
\Blade::extend(function($value) {
return preg_replace('/\@define(.+)/', '<?php ${1}; ?>', $value);
});
Effectuez ensuite l'une des opérations suivantes:
Solution rapide: si vous êtes paresseux, mettez simplement le code dans la fonction boot () de AppServiceProvider.php.
Solution plus agréable: créez votre propre fournisseur de services. Voir https://stackoverflow.com/a/28641054/2169147 sur la façon d'étendre la lame dans Laravel 5. C'est un peu plus de travail de cette façon, mais un bon exercice sur la façon d'utiliser les fournisseurs :)
LARAVEL 4
Vous pouvez simplement mettre le code ci-dessus au bas de app / start / global.php (ou tout autre endroit si vous pensez que c'est mieux).
Après les modifications ci-dessus, vous pouvez utiliser:
@define $i = 1
pour définir une variable.