В моей системе отметки времени базы данных записываются как значения UTC.Symfony2 Отображение даты и времени с часовым поясом в формах
Каждый пользователь имеет часовой пояс, записанный в их профиле. При входе в систему значение часового пояса переносится из их профиля на их сеанс ($ session-> set ('timezone', $ tz);).
В большинстве моих кодов используется пакет Sonata INTL, поэтому пользователи видят значения даты и времени, отображаемые правильно для своего часового пояса, , за исключением в полях формы.
Недавно я обнаружил поля model_timezone и view_timezone на некоторых типах Symfony2. Я могу заставить поля показать правильные значения (как показано в нижеприведенных фрагментах кода), однако я хотел бы понять, как я могу заполнить view_timezone из сеанса пользователя? (Я предполагаю, что я могу передать в $ варианты каким-то образом?)
Событие контроллера фрагмент кода:
$object = <object loaded>;
$form = $this->createForm(new MyEventType(), $object);
MyEventType Форма сниппет:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('id', null, array(
'label' => 'Event ID',
));
$builder->add('changed', 'datetime', array(
'date_widget' => 'single_text',
'date_format' => \IntlDateFormatter::SHORT,
'time_widget' => 'single_text',
'model_timezone' => 'UTC',
'view_timezone' => 'Pacific/Auckland',
));
И, Что проблема? Вы можете добавить значение сеанса в параметр «view_timezone» – Hast
Привет, Хаст, я думаю, вопрос должен быть сформулирован: «Как мне получить значение сеанса в форме?» У меня есть несколько форм, которые имеют поля datetime. Поэтому используемый подход должен быть легко воспроизводимым. – ritter