Laravel - Erro no Compact, Array ou Outros

O que posso ter feito de errado na view create-edit ou no Controller ProdutoController que usando o método compact ou passando valores para a view com array nativo do PHP, os valores na view saem todos como 1?

1 curtida

Porque você está testando se os elementos são verdade no or (||) ele compara e te devolve 1 ou true para um das condições seja verdadeira ou falso se as duas forem falsa. No PHP tem que tomar cuidado principalmente é retornos null que ele também é falso em alguns casos. Ai você pode até questionar mas isso funciona, isso deveria funcionar, mas veja, não funciona como deveria funcionar e pode te causar problemas em versões do PHP onde or é para imprimir e || fazer a comparação, e na verdade o or compara também, então vira uma salada de fruta nesse aspecto, então:

Não faça isso para imprimir os valores das suas variáveis, somente se for fazer comparação:

<div class="form-group">
        <input type='text' name='name' placeholder="Nome:" class="form-control" 
               value="{{ $product->name or old('name') }}">
</div>

e faça assim para imprimir o valor das variáveis, exemplo:

<div class="form-group">
       <input type='text' name='name' placeholder="Nome:" class="form-control" 
               value="{{ isset($product)?$product->name: old('name') }}">
</div>

para um reforço leia esse link sobre: Operadores de Comparação

Ou seja, você esta usando errado o PHP e por isso não está trazendo a resposta que esperava e precisa entender esses aspectos sobre PHP sempre fazer o código seguro.

1 curtida