add grouping and fix localization of trans. string in ActivityReason

the label of activity type is now handled by translatableStringHelper.

Reasons are also grouped by categories.

This is thanks to PR https://github.com/symfony/symfony/pull/14050
This commit is contained in:
Julien Fastré 2015-07-06 00:55:39 +02:00
parent 7e688d8573
commit 7675f0e250
2 changed files with 13 additions and 9 deletions

View File

@ -25,6 +25,7 @@ namespace Chill\ActivityBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\HttpFoundation\RequestStack;
use Chill\MainBundle\Templating\TranslatableStringHelper;
/**
* Description of TranslatableActivityReason
@ -33,14 +34,12 @@ use Symfony\Component\HttpFoundation\RequestStack;
*/
class TranslatableActivityReason extends AbstractType
{
/**
* @var RequestStack
*/
private $requestStack;
public function __construct(RequestStack $requestStack)
private $translatableStringHelper;
public function __construct(TranslatableStringHelper $translatableStringHelper)
{
$this->requestStack = $requestStack;
$this->translatableStringHelper = $translatableStringHelper;
}
public function getName()
@ -55,11 +54,16 @@ class TranslatableActivityReason extends AbstractType
public function configureOptions(OptionsResolver $resolver)
{
$locale = $this->requestStack->getCurrentRequest()->getLocale();
$helper = $this->translatableStringHelper;
$resolver->setDefaults(
array(
'class' => 'ChillActivityBundle:ActivityReason',
'property' => 'name['.$locale.']'
'choice_label' => function($choice, $key) use ($helper) {
return $helper->localize($choice->getName());
},
'group_by' => function($choice, $key) use ($helper) {
return $helper->localize($choice->getCategory()->getName());
}
)
);
}

View File

@ -9,7 +9,7 @@ services:
chill.activity.form.type.translatableactivityreason:
class: Chill\ActivityBundle\Form\Type\TranslatableActivityReason
arguments:
- "@request_stack"
- "@chill.main.helper.translatable_string"
tags:
- { name: form.type, alias: translatable_activity_reason }