M
привет. Можно ли в виджете \yii\jui\DatePicker отображать дату в одном формате, а на сервер отправлять в другом?
Valeriu
а разработчики сами потянулись
M
о. А как?
Ортем
Конвертишь в нужный тебе вид как хош. Ща код поищу для примера.
Ортем
о. А как?
$currentDateTime = new DateTime(); $currentDateTime->format('Y-m-d');
Ортем
format('Y-m-d'); задаешь нужный формат себе здесь.
M
в таком виде отображается по формату, и на сервер уходит тоже так же
Ортем
И перед отправкой в Бд преобразовываешь его
Ортем
в таком виде отображается по формату, и на сервер уходит тоже так же
Ну так перед отправкой возьми и переделай, что мешает то
M
чем? js-кой?
M
надо тогда js-файл создавать подключать и там обрабатывать. А было бы хорошо, если бы в виджете такая функция уже была
Ортем
Ненадо никакого ЖС файла тебе.
Ортем
В контроллере, в том месте где ты получаешь данные от пользователя, вытягиваешь нужный кусок из объекта и конвертишь его
Ортем
if ($model->load(Yii::$app->request->post())) { $model->date_post = $this->getCurrentDateTime()->format('Y-m-d H:i:s'); $model->save() }
Ортем
В твоем случае подставь вместо $this->getCurrentDateTime()->format('Y-m-d H:i:s'); То что ты получаешь от пользователя
Ортем
$model->date_post->format('Y-m-d H:i:s'); Что-то в таком виде будет. Без проверки написал
Ортем
А потом вновь, перед отправкой в виджет датапикер, конвертишь обратно
M
$model->date_post->format('Y-m-d H:i:s'); не сработает. date_post - это просто свойство класса, не объект. У него нет метода format(); Намного легче, если из фронта отображать один формат, а отправлять на бэкэнд другой. Тогда не нужны будут лишние конвертирования
Ортем
Это просто мой пример. У тебя своё та должно быть ...
Ортем
Короче, получаешь данные от пользователя, перед сохранением конвертишь их и потом сохраняешь
Ортем
2 строчки кода. 10 секунд работы
Ортем
В модель перенести ?
Ортем
Просто если сейчас еще человеку объяснять как в модель все это дело переносить, он вообще запутается, учитывая что он не может продумать простое конвертирование даты туда и обратно
mr.
накуя? чо это за левак аще?)
Да он задолбал пиарить свои говногруппы.
mr.
Никому кроме него не мешает.
SiZE
Ну раскрутит группу, рекламу начнет постить )
Valeriu
не буду я рекламу постить
SiZE
все так говорят
SiZE
ровно до момента когда начинают постить рекламу )
mr.
Ты ещё не понял, что твоя группа не нужна?
Valeriu
Понял
SiZE
Казино три клинка ) Регистрируйся со скидкой 15% )
mr.
Три болта)
mr.
Оу, тройничок))
Павел
Пошла жара!
M
валидироваться тогда не будет
SiZE
или в форме надо дефолтное значение выдать? тогда в init
M
в форме надо дефолтное значение выдать
M
есть валидатор, который делает запрос в БД. А в бд даты хранятся в формате y-m-d. Поэтому нужно туда отправлять данные уже в таком формате, а не только в beforeSave конвертировать формат
SiZE
В load не надо ниче переопределять.
M
т.е. не в load конвертировать, а в beforeValidate()
SiZE
нет
M
а где?
SiZE
данные в форме должны оставаться всегда в одном формате
M
и почему не в Load?
M
они итак в одном формате
M
в том, который БД. Они кривыми только из фронта приходят
M
мне нужен формат-бд
SiZE
перефразирую. как в фронте так и в форме
M
почему
M
ок
SiZE
так форма это класс описывающий форму на фронте
SiZE
так понятней?
M
тогда в валидаторе, котоырй в БД обращается, мне надо конвертировать в бд-формат. И в save() надо конвертировать в бд-формат
SiZE
зачем?
M
затем, чтобы в БД в нужном формате сохранить. И чтобы валидатор в бд правильный запрос отправил
SiZE
Есть DATE_FORMAT()
M
чем плохо что в классе и в frontend-форме даты в разных форматах?
SiZE
ну тем же почему ты одну форму для всех форм на сайте не используешь и одно поле которое и дату и id хранит
M
намного проще в load() конвертнуть один раз. Чем: 1) конвертировать в валидаторе date_format 2) конвретировать в beforeSave
SiZE
ок. сделай поле private $dbDate;
M
)
M
а как в telegram оформлять код?
M
я оставлю конвертацию в load(), не вижу ничего плохого в этом
SiZE
Да делай чо хочешь 😂
SiZE
а как в telegram оформлять код?
оборачиваешь обратным апострофом для строчного кода и тройным для многострочного
Karim
я оставлю конвертацию в load(), не вижу ничего плохого в этом
а если валидацию не пройдет? А формат уже сконвертирован в db'шный вариант
M
а если валидацию не пройдет? А формат уже сконвертирован в db'шный вариант
И что дальше. Валидацию не прошёл - отдаю ошибку на фронт
SiZE
он имел ввиду в инпут что покажешь?
SiZE
пользователю надо показать данные которые он ввел
Ivan
Мне тут PHP Inspections EA Extended в PHPStorm молвит человечески голосом, юзай \is_array вместо is_array. И даёт ссылку https://github.com/Roave/FunctionFQNReplacer
Ivan
Знаешь что позитивно в этом скрине? То что это метод класса, а не функция