mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
person: add preferrred_choices for countries and languages
This commit is contained in:
parent
8de78c7584
commit
bddcdd7de2
@ -96,6 +96,9 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
|
||||
$container->setParameter('chill_main.available_languages',
|
||||
$config['available_languages']);
|
||||
|
||||
$container->setParameter('chill_main.available_countries',
|
||||
$config['available_countries']);
|
||||
|
||||
$container->setParameter('chill_main.routing.resources',
|
||||
$config['routing']['resources']);
|
||||
|
||||
|
@ -52,7 +52,7 @@ class Configuration implements ConfigurationInterface
|
||||
->prototype('scalar')->end()
|
||||
->end() // end of array 'available_languages'
|
||||
->arrayNode('available_countries')
|
||||
->defaultValue(array('fr'))
|
||||
->defaultValue(array('FR'))
|
||||
->prototype('scalar')->end()
|
||||
->end() // end of array 'available_countries'
|
||||
->arrayNode('routing')
|
||||
|
@ -28,6 +28,7 @@ use Chill\MainBundle\Form\Type\DataTransformer\ObjectToIdTransformer;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
use Chill\MainBundle\Form\Type\Select2ChoiceType;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||
|
||||
/**
|
||||
* Extends choice to allow adding select2 library on widget
|
||||
@ -37,31 +38,25 @@ use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
*/
|
||||
class Select2CountryType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var RequestStack
|
||||
*/
|
||||
private $requestStack;
|
||||
private RequestStack $requestStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var TranslatableStringHelper
|
||||
*/
|
||||
protected $translatableStringHelper;
|
||||
private ObjectManager $em;
|
||||
|
||||
/**
|
||||
* @var ObjectManager
|
||||
*/
|
||||
private $em;
|
||||
protected TranslatableStringHelper $translatableStringHelper;
|
||||
|
||||
protected ParameterBagInterface $parameterBag;
|
||||
|
||||
public function __construct(
|
||||
RequestStack $requestStack,
|
||||
ObjectManager $em,
|
||||
TranslatableStringHelper $translatableStringHelper
|
||||
TranslatableStringHelper $translatableStringHelper,
|
||||
ParameterBagInterface $parameterBag
|
||||
)
|
||||
{
|
||||
$this->requestStack = $requestStack;
|
||||
$this->em = $em;
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
$this->parameterBag = $parameterBag;
|
||||
}
|
||||
|
||||
public function getBlockPrefix()
|
||||
@ -82,19 +77,29 @@ class Select2CountryType extends AbstractType
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$locale = $this->requestStack->getCurrentRequest()->getLocale();
|
||||
$countries = $this->em->getRepository('Chill\MainBundle\Entity\Country')->findAll();
|
||||
$choices = array();
|
||||
$choices = [];
|
||||
$preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||
$preferredChoices = [];
|
||||
|
||||
foreach ($countries as $c) {
|
||||
$choices[$c->getId()] = $this->translatableStringHelper->localize($c->getName());
|
||||
}
|
||||
|
||||
foreach ($preferredCountries as $pc) {
|
||||
foreach ($countries as $c) {
|
||||
if ($c->getCountryCode() == $pc) {
|
||||
$preferredChoices[$c->getId()] = $this->translatableStringHelper->localize($c->getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
asort($choices, SORT_STRING | SORT_FLAG_CASE);
|
||||
|
||||
$resolver->setDefaults(array(
|
||||
'class' => 'Chill\MainBundle\Entity\Country',
|
||||
'choices' => array_combine(array_values($choices),array_keys($choices))
|
||||
'choices' => array_combine(array_values($choices),array_keys($choices)),
|
||||
'preferred_choices' => array_combine(array_values($preferredChoices), array_keys($preferredChoices))
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ class Select2LanguageType extends AbstractType
|
||||
$this->requestStack = $requestStack;
|
||||
$this->em = $em;
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
$this->parameterBag = $parameterBag;
|
||||
}
|
||||
|
||||
public function getBlockPrefix()
|
||||
@ -73,20 +74,24 @@ class Select2LanguageType extends AbstractType
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$locale = $this->requestStack->getCurrentRequest()->getLocale();
|
||||
$languages = $this->em->getRepository('Chill\MainBundle\Entity\Language')->findAll();
|
||||
$choices = array();
|
||||
$preferredLanguages = $this->parameterBag->get('chill_main.available_languages');
|
||||
$choices = [];
|
||||
$preferredChoices = [];
|
||||
|
||||
foreach ($languages as $l) {
|
||||
$choices[$l->getId()] = $this->translatableStringHelper->localize($l->getName());
|
||||
}
|
||||
foreach ($preferredLanguages as $l) {
|
||||
$preferredChoices[$l] = $choices[$l];
|
||||
}
|
||||
|
||||
asort($choices, SORT_STRING | SORT_FLAG_CASE);
|
||||
|
||||
$resolver->setDefaults(array(
|
||||
'class' => 'Chill\MainBundle\Entity\Language',
|
||||
'choices' => array_combine(array_values($choices), array_keys($choices)),
|
||||
'preferred_choices' => ['FR'] //TODO use $parameterBag->get('available_languages')
|
||||
'preferred_choices' => array_combine(array_values($preferredChoices), array_keys($preferredChoices))
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -39,3 +39,4 @@ assetic:
|
||||
|
||||
chill_main:
|
||||
available_languages: [fr, en]
|
||||
available_countries: [FR]
|
||||
|
@ -25,6 +25,7 @@ services:
|
||||
- "@request_stack"
|
||||
- "@doctrine.orm.entity_manager"
|
||||
- "@chill.main.helper.translatable_string"
|
||||
- '@Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface'
|
||||
tags:
|
||||
- { name: form.type, alias: select2_chill_country }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user