Size: a a a

Laravel для начинающих

2021 June 09

P

PSYTRGLES in Laravel для начинающих
да, это самый не геморойный и универсальный вариант
источник

A

Alexandr in Laravel для начинающих
золотые слова\
источник

P

PSYTRGLES in Laravel для начинающих
у тебя не spa?
источник

Д

Діма in Laravel для начинающих
нет
иногда отображаю даные через компоненты реакт иногда через blade
источник

Д

Діма in Laravel для начинающих
на фронте постоянно писать доп. функции не очень хочется
источник

P

PSYTRGLES in Laravel для начинающих
а как ты даты отображаешь? просто $model->created_at ?
источник

Д

Діма in Laravel для начинающих
да
источник

P

PSYTRGLES in Laravel для начинающих
смысл же в том, что бы не просто добавлять +2 часа, а ставить временную зону именно клиента
источник

P

PSYTRGLES in Laravel для начинающих
сегодня ты находишься в +2, а завтра зашел в своей проект с -3
источник

Д

Діма in Laravel для начинающих
ну чтобы это делать то нужно клиента проверять на временную зону и прямо на фронте менять
источник

AH

Andrey Helldar in Laravel для начинающих
У нас реализовано так:
Мускуль UTC, приложуха UTC+3, НО сайт работает для филиалов по трём странам и с разными часовыми поясами.

Дабы не париться с моделями и прочим, у нас работает мидлваря:

<?php

namespace App\Http\Middleware;

use Closure;

class Timezones
{
   public function handle($request, Closure $next)
   {
       if ($request->hasHeader('X-Timezone')) {
           $timezone = $request->header('X-Timezone');
           
           $offset = static::timezoneOffsetString(timezone_offset_get(new \DateTimeZone($timezone), new \DateTime()));

           date_default_timezone_set($timezone);
           config(['app.timezone' => $timezone]);

           \DB::statement('set time_zone="' . $offset . '"');
       }

       return $next($request);
   }

   public static function timezoneOffsetString($offset)
   {
       return sprintf("%s%02d:%02d", ($offset >= 0) ? '+' : '-', abs($offset / 3600), abs($offset % 3600));
   }
}

Через offset сделано специально, так как на сервере в базе данных могут стоять кривые метки времени, которые не знают, что в России много лет как не переводят часы на летнее/зимнее время, а offset берёт параметры из свежего php, который это знает.
источник

AH

Andrey Helldar in Laravel для начинающих
Ну и картинкой, если кому приятнее читать
источник

AH

Andrey Helldar in Laravel для начинающих
С этой мидлварей если в параметр X-Timezone передать, например, Asia/Vladivostok, то все даты и время будут отдаваться в UTC+10, а в базу будут конвертироваться в UTC+0.
источник

Д

Діма in Laravel для начинающих
мидлвар просто на роут вешаешь и все работает?
источник

AH

Andrey Helldar in Laravel для начинающих
У нас да
источник

P

PSYTRGLES in Laravel для начинающих
я такой сижу, собираю сообщение, а он выдал уже )))
источник

AH

Andrey Helldar in Laravel для начинающих
Например
источник

AH

Andrey Helldar in Laravel для начинающих
😁
источник

NT

Nazar Tertyshnyi in Laravel для начинающих
Ты чо тему поменял? :D
источник

AH

Andrey Helldar in Laravel для начинающих
Сплюнь) Это sublime. Он под рукой)
источник