add button_attr_builder option to ButtonField

This commit is contained in:
Simon Vieille 2021-06-02 18:43:19 +02:00
parent 101fc89a34
commit 4ea6eceb0d

View file

@ -3,6 +3,7 @@
namespace App\Core\Crud\Field;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Twig\Environment;
/**
* class ButtonField.
@ -11,6 +12,15 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
*/
class ButtonField extends Field
{
public function buildView(Environment $twig, $entity, array $options, ?string $locale = null)
{
if (isset($options['button_attr_builder']) && is_callable($options['button_attr_builder'])) {
$options['button_attr'] = (array) call_user_func($options['button_attr_builder'], $entity, $options);
}
return parent::buildView($twig, $entity, $options, $locale);
}
public function configureOptions(OptionsResolver $resolver): OptionsResolver
{
parent::configureOptions($resolver);
@ -18,11 +28,13 @@ class ButtonField extends Field
$resolver->setDefaults([
'view' => '@Core/admin/crud/field/button.html.twig',
'button_attr' => [],
'button_attr_builder' => null,
'button_tag' => 'button',
]);
$resolver->setAllowedTypes('button_attr', ['array']);
$resolver->setAllowedTypes('button_tag', ['string']);
$resolver->setAllowedTypes('button_attr_builder', ['null', 'callable']);
return $resolver;
}