backports murph-skeleton

This commit is contained in:
Simon Vieille 2021-06-02 18:56:50 +02:00
parent 49f4517d39
commit 761d697363
2 changed files with 18 additions and 1 deletions

View file

@ -31,6 +31,8 @@ abstract class Field
'view' => null,
'raw' => false,
'sort' => null,
'href' => null,
'href_attr' => [],
'attr' => [],
]);
@ -38,6 +40,8 @@ abstract class Field
$resolver->setAllowedTypes('property', ['null', 'string']);
$resolver->setAllowedTypes('view', 'string');
$resolver->setAllowedTypes('attr', 'array');
$resolver->setAllowedTypes('href', ['null', 'string']);
$resolver->setAllowedTypes('href_attr', 'array');
$resolver->setAllowedTypes('raw', 'boolean');
$resolver->setAllowedTypes('property_builder', ['null', 'callable']);
$resolver->setAllowedValues('sort', function($value) {

View file

@ -39,6 +39,19 @@ class CrudExtension extends AbstractExtension
$instance = new $field();
$resolver = $instance->configureOptions(new OptionsResolver());
return $instance->buildView($this->twig, $entity, $resolver->resolve($config['options']), $locale);
$render = $instance->buildView($this->twig, $entity, $resolver->resolve($config['options']), $locale);
if (isset($config['options']['href'])) {
$config['options']['href_attr'] = $config['options']['href_attr'] ?? [];
$attributes = '';
foreach ($config['options']['href_attr'] as $k => $v) {
$attributes .= sprintf('%s="%s" ', htmlspecialchars($k), htmlspecialchars($v));
}
$render = sprintf('<a href="%s" %s>%s</a>', htmlspecialchars($config['options']['href']), $attributes, $render);
}
return $render;
}
}