Как в laravel маскировать данные input

братья прогеры, столкнулся с такой проблемой, данные которые приходят с JSON, допустим пришел ответ JSON в поле дата рождения 05.06.1995 выдал такие данные, а надо чтобы они прилетали в поле input примерно в таком виде $$.06.19$$, только вместо доллара должны быть звездочки, никогда не сталкивался с таким, благодарю за помощь


Ответы (1 шт):

Автор решения: Dmitrii Sedov

ну для вашего вопроса используются мутаторы. Прочитайте в документации про них. Далее приведу пример как правильно делать.

Во-первых. Необходимо спрятать в выборке данное значение поля бд. Например оно называется birthdate, значит в модели указываете:

class User extends Model
{
    ...
    protected $hidden = ['birthdate'];
    ...
}

В результате в выборке фронт не увидит данное значение, но на бэке для обработки можно так же использовать его $user->birthdate.

Во-вторых. Теперь необходимо вернуть на фронт зашифрованное значение в замен исходного спрятанного. Для это создадим мутатор:

class User extends Model
{
    ...
    protected $hidden = ['birthdate'];
    protected $appends= ['encode_birthdate'];
    ...

    public function getEncodeBirthdateAttribute()
    {
        $time = strtotime($this->birthdate);
        return '**.'.date('m', $time).'.'.substr(date('Y', $time), 0, 2).'**';
    }
}

В результате на фронте появится значение encode_birthdate в объекте модели полученной.

→ Ссылка