<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Intl\Timezones;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\Translation\TranslatorInterface;
class SpeakerOrderType extends AbstractType
{
private TranslatorInterface $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$prefix = $this->translator->trans('label.time_zone');
$timezones = [];
$tz = Timezones::forCountryCode('RU');
foreach ($tz as $key) {
$value = Timezones::getName($key);
$timezones[$prefix . ': (' . Timezones::getGmtOffset($key) . ') ' . $value] = $key;
}
uksort($timezones, function($a, $b) use ($timezones) {
if ($timezones[$a] === "Europe/Moscow") {
return -1;
};
if ($timezones[$b] === "Europe/Moscow") {
return 1;
};
return strcasecmp($a, $b);
});
$builder
->add('timezone', ChoiceType::class, [
'choices' => $timezones,
'placeholder' => 'label.select_time_zone'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
]);
}
}