Erro Array no helper
[Concluído]
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
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.
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...
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 {
[...]
}
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
Ah, tbm deu certo assim:
$cod === null
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!