From d1575de33c1ef11cfcd76201120c3b1f3407d06b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jib=C3=A9=20Barth?= Date: Sun, 28 Oct 2018 13:21:19 +0100 Subject: [PATCH] Improve label display --- src/Service/FormConfigService.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Service/FormConfigService.php b/src/Service/FormConfigService.php index b048871..93cec37 100644 --- a/src/Service/FormConfigService.php +++ b/src/Service/FormConfigService.php @@ -7,7 +7,7 @@ use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextType; -use Symfony\Component\Form\FormBuilder; +use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\Form\FormInterface; @@ -16,7 +16,7 @@ class FormConfigService /** * @var FormFactoryInterface */ - private $factory; + protected $factory; public function __construct( FormFactoryInterface $factory @@ -36,9 +36,10 @@ public function getFormForConfig(array $config): FormInterface return $formBuilder->getForm(); } - protected function addToForm(FormBuilder $formBuilder, string $key, $field) + protected function addToForm(FormBuilderInterface $formBuilder, string $key, $field, $parentKey = ''): void { $params = [ + 'label' => $this->humanize($key) . (($parentKey) ? sprintf(' (%s)', $this->humanize($parentKey)) : null), 'data' => $field, 'required' => false, 'translation_domain' => 'barth_simple_config', @@ -47,7 +48,8 @@ protected function addToForm(FormBuilder $formBuilder, string $key, $field) case \is_array($field): foreach ($field as $subKey => $value) { if (!\is_int($subKey)) { - $this->addToForm($formBuilder, $key . ':' . $subKey, $value); + + $this->addToForm($formBuilder, $subKey, $value, ($parentKey) ? $parentKey . ':' . $key : $key); } } return; @@ -67,8 +69,15 @@ protected function addToForm(FormBuilder $formBuilder, string $key, $field) default: return; } - + if ('' !== $parentKey) { + $key = $parentKey . ':' . $key; + } $key = \str_replace('.', '-', $key); $formBuilder->add($key, $type, $params); } + + protected function humanize($text) + { + return ucfirst(strtolower(trim(preg_replace(array('/([A-Z])/', '/[_\s]+/'), array('_$1', ' '), $text)))); + } }