[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Roberto Noya
Criador Roberto Noya 10/08/2019

Olá Carlos,

Estou començando a trabalhar com Mutators porém sem sucesso. Fiz um exemplo bem simples com um único campo de data.

Vou compartilhar as telas para você entender melhor.

Model: 

https://uploaddeimagens.com.br/imagens/model-jpg-c07a9edc-7c16-401c-a514-4cf7c16ad94e

Controller: Note que antes de realizar o update eu exibo as informações do Array dataForm;

https://uploaddeimagens.com.br/imagens/controller-jpg-586eadae-393c-4b84-ae27-b639d685b8a8

Data Form (Resultado) Peço que apenas verifique o campo "data_nascimento". 

https://uploaddeimagens.com.br/imagens/dataform-jpg

 

Da forma como está aparece um erro pois a formatação não está ocorrendo. Parece que a model não está atuando sobre Controller.

Voce vai notar que existem mais campos para formatar porém estou testanto apenas a data de nascimento nesse exemplo.

Manager Carlos Ferreira 10/08/2019

Olá, Roberto!
Tudo bem?

Qual o erro que está gerando? Me envia um print, porque assim consigo interpretar com mais precisão e te dá um feedback.

No aguardo amigo.

Carlos Ferreira
Criador Roberto Noya 10/08/2019

Olá Carlos,

Segue a tela de erro:

https://uploaddeimagens.com.br/imagens/erro-jpg-4a0e97be-d206-43a8-949e-d4d4a9df9f2b

Não sei se é útil mas abaixo segue o print do Form

https://uploaddeimagens.com.br/imagens/tela2-jpg-387bbe9e-ce61-431f-a94a-fb5069dd703f

 

 

Roberto Noya
Manager Carlos Ferreira 10/08/2019

Certo, a classe de Carbon não está conseguindo fazer o casting das datas.

Fazendo assim, deu certo?
public function setDataNascimentoAttribute($value)
{
    // use Carbon\Carbon;
    $this->attributes['data_nascimento'] = Carbon::parse($value)->format('Y-m-d');
}

public function getDataNascimentoAttribute($value)
{
    // Se tiver utilizando o Form Collective não precisa desse mutator get
    return Carbon::parse($value)->format('d/m/Y');
}

--------------------------

Posta o seu código no GitHub, que eu dou uma analisar melhor e te dou um feedback.

Carlos Ferreira
Criador Roberto Noya 10/08/2019

Olá Carlos,

Eu criei um arquivo Helper que contém funções que formata várias informações com mascara de formatação.

A exemplo de campos de data eu criei  a função chamada ConvertDate que contém o Carbon e formata a data na Model:

public function setDataNascimentoAttribute( $value ) {

$this->attributes['data_nascimento'] = ConvertDate($value);

return $this;

}

Dessa forma funcionou perfeitamente.

É errado fazer dessa forma? É errado usar usar o comando helper para isso?

Achei que seria prático pois o helper permite eu acessar essas funções de qualquer lugar do projeto.

Roberto Noya
Manager Carlos Ferreira 10/08/2019

Olá, Roberto!

Não é uma má prática, eu mesmo tenho um helper muito semelhante a esse, que converte justamente datas.

Veja a minha função no arquivo de helpers:
if (!function_exists('formatDateAndTime')) {
    function formatDateAndTime($value = '', $format = 'd/m/Y') {
        if (!$value) return;
       
        return \Carbon\Carbon::parse($value)->format($format);
    }
}

Carlos Ferreira
Criador Roberto Noya 10/08/2019

Perfeito

Obrigado

Roberto Noya
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!