При создании пользовательской директивы Laravel Blade, как передать переменную? В настоящий момент переменная, переданная в директиву @svg (), не анализируется и обрабатывается как строка:
Представление блейда:
@svg($svg->url, 'fill-white')
AppServiceProvider. php
Blade::directive('svg', function ($arguments) {
list($path, $class) = array_pad(explode(',', trim($arguments, "() ")), 2, '');
$path = trim($path, "' ");
$class = trim($class, "' ");
dd($path); // Outputs $svg->url
// Required output = path/to/filename.svg
});
ОБНОВЛЕННЫЙ КОД (на основе ответа Андрея Даскалу):
Шаблон блейда:
@php($svg = 'test.svg')
@svg($svg, 'fill-white')
AppServiceProvider:
Blade::directive('svg', function ($arguments) {
eval("\$params = [$arguments];");
// Produces 'undefined variable $svg' error
list($path, $class) = $params;
});