src/Form/SpeakerOrderType.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\Intl\Timezones;
  7. use Symfony\Component\OptionsResolver\OptionsResolver;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. class SpeakerOrderType extends AbstractType
  10. {
  11.     private TranslatorInterface $translator;
  12.     public function __construct(TranslatorInterface $translator)
  13.     {
  14.         $this->translator $translator;
  15.     }
  16.     public function buildForm(FormBuilderInterface $builder, array $options)
  17.     {
  18.         $prefix $this->translator->trans('label.time_zone');
  19.         $timezones = [];
  20.         $tz Timezones::forCountryCode('RU');
  21.         foreach ($tz as $key) {
  22.             $value Timezones::getName($key);
  23.             $timezones[$prefix ':  (' Timezones::getGmtOffset($key) . ') ' $value] = $key;
  24.         }
  25.         uksort($timezones, function($a$b) use ($timezones) {
  26.             if ($timezones[$a] === "Europe/Moscow") {
  27.                 return -1;
  28.             };
  29.             if ($timezones[$b] === "Europe/Moscow") {
  30.                 return 1;
  31.             };
  32.             return strcasecmp($a$b);
  33.         });
  34.         $builder
  35.             ->add('timezone'ChoiceType::class, [
  36.                 'choices'     => $timezones,
  37.                 'placeholder' => 'label.select_time_zone'
  38.             ]);
  39.     }
  40.     public function configureOptions(OptionsResolver $resolver)
  41.     {
  42.         $resolver->setDefaults([
  43.         ]);
  44.     }
  45. }