[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rangel
Criador Rangel 08/02/2021

Olá carlos. boa noite.

Uso em um projeto (Laravel 7) um helper com a seguinte função:

function tipoManifestacao($cod){
    
    $tipoManifestacao = [
        ['cod' => 0, 'tipo' => 'Anônima'],
        ['cod' => 1, 'tipo' => 'Identificada'],
    ];

    if($cod == null){
        return $tipoManifestacao;
    }else{
        switch ($cod) {
            case 0:
                return "Anônima";
                break;
            case 1:
                return "Identificada";
                break;

            default:
                # code...
                break;
        }
    }
}

Sempre usei esse tipo de função com muito sucesso. Porém, de repente tive o seguinte erro:

ErrorException htmlspecialchars() expects parameter 1 to be string, array given (View: /var/www/html/Projetos/Laravel

Quando eu removo da função a parte de criação do Array, a mesma responde como espero no Blade.

No blade a chamo de seguinte forma:
{{ tipoManifestacao($pendente->tipo) }}

O que você acha que pode ser esse erro?

P.S: Já rodei os comandos:
config:cache
view:cache
view:clear
config:clear

Manager Carlos Ferreira 08/02/2021

Olá, Rangel!
Tudo bem?

Provavelmente o valor de $pendente->tipo é null, e isso fez cair no seu primeiro if e retornou um array, como está tentando imprimir o array com {{}} gerou o erro.

A sua função tipoManifestacao deve retornar uma string, ainda que o valor de $cod seja igual a null.

Carlos Ferreira
Criador Rangel 08/02/2021

Ooi...

Incrivelmente não... teste o $pendente->tipo sem estar chamando a função e ele imprime os inteiros, ou seja, {{ tipoManifestacao(1) }}

observei que todas as funções que tem a mesma estrutura dessa passaram a apresentar o mesmo problema...

Rangel
Manager Carlos Ferreira 08/02/2021

Tem o código no GitHub?
Eu dou uma olhada e te ajudo a identificar o problemas.

Mas, já adianto que não pode retornar um array, porque está imprimindo o retorno.

Só para o próprio editor já cuspir o erro na cara, indique que a função vai retornar uma string:
function tipoManifestacao($cod): string {
    [...]
}

Carlos Ferreira
Criador Rangel 08/02/2021

RESOLVIDO

a função poderia receber 0 ou 1

porém o if( $cod == null ) estava intepretando o 0 como null...

Resolvi acrescentando if( $cod == null && $cod != 0 )

At.te

Rangel
Criador Rangel 08/02/2021

Ah, tbm deu certo assim:

$cod === null

Rangel
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!