LARAVEL 5.5 и выше
Директива @php blade больше не принимает встроенные теги. Вместо этого используйте полную форму директивы:
@php
$i = 1
@endphp
LARAVEL 5.2 и выше
Вы можете просто использовать:
@php ($i = 1)
Или вы можете использовать его в выражении блока:
@php
$i = 1
@endphp
LARAVEL 5
Расширить лезвие вот так:
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @define $variable = "whatever"
| </code>
|--------------------------------------------------------------------------
*/
\Blade::extend(function($value) {
return preg_replace('/\@define(.+)/', '<?php ${1}; ?>', $value);
});
Затем выполните одно из следующих действий:
Быстрое решение: если вы ленивы, просто поместите код в функцию boot () AppServiceProvider.php.
Более хорошее решение: создать собственного поставщика услуг. См. Https://stackoverflow.com/a/28641054/2169147 о том, как расширить блейд в Laravel 5. Таким образом, немного больше работы, но хорошее упражнение о том, как использовать провайдеров :)
ЛАРАВЕЛ 4
Вы можете просто поместить приведенный выше код внизу app / start / global.php (или в любое другое место, если считаете, что это лучше).
После вышеуказанных изменений вы можете использовать:
@define $i = 1
определить переменную.