Здравствуйте, у меня есть проект symfony 4, в котором у меня есть formBuilder.
В этой форме у меня есть EntityType, который представляет темы. Я хочу дать им атрибут data-asset-url, который соответствует версионному образу моего проекта (assets).
Мне удалось сделать так:
formType. php
use Symfony\Component\Asset\Packages;
private $assetManagers;
public function __construct(Packages $assetManagers)
{
$this->assetManagers = $assetManagers;
}
$builder
->add('theme', EntityType::class, [
"class" => Theme::class,
"label" => "Thème de l'application",
"placeholder" => "Sélectionner un thème",
"choice_label" => "nom",
"choice_value" => "slug",
"choice_attr" => function($choice, $key, $value)
{
return [
'data-asset-url' => $this->assetManagers->getUrl("build/images/" . $value . ".png" ),
];
}
])
Теперь я могу получить некоторый URL-адрес, например "/build/images/sketchy.1fe9738c.png"
(например, $value = "sketchy"
)
С Twig я должен был сделать следующее:
"{{ asset('build/images/sketchy.png')}}"
Теперь я бы хотел go дальше. Представьте, что с Twig я хочу использовать LiipImagineBundle для получения своего изображения, но с измененным размером относительно определенной конфигурации. Я бы сделал так:
"{{ asset('build/images/sketchy.png') | imagine_filter('theme') }}"
Теперь, с моим FormBuilder, как я могу реализовать LiipImagineBundle, чтобы завершить свою первую идею с активами, в PHP?
Спасибо за ваше помощь!
РЕДАКТИРОВАТЬ: Хорошо, я нашел решение!
Просто:
use Symfony\Component\Asset\Packages;
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
private $assetManagers;
private $liipImagine;
public function __construct(Packages $assetManagers, CacheManager $liipImagine)
{
$this->assetManagers = $assetManagers;
$this->liipImagine = $liipImagine;
}
$builder
->add('theme', EntityType::class, [
"class" => Theme::class,
"label" => "Thème de l'application",
"placeholder" => "Sélectionner un thème",
"choice_label" => "nom",
"choice_value" => "slug",
"choice_attr" => function($choice, $key, $value)
{
return [
'data-asset-url' => $this->liipImagine->generateUrl($this->assetManagers->getUrl("build/images/" . $value . ".png" ), "theme"),
];
}
])