{{-- Formulário compartilhado de produto. @param \App\Models\Product|null $product Nulo ao criar. --}} @php($editing = isset($product)) @php($priceCents = old('price', $editing ? $product->price : null)) @php($priceValue = $priceCents !== null && $priceCents !== '' ? number_format(((int) $priceCents) / 100, 2, ',', '.') : '')
@error('name')
{{ $message }}
@enderror
O nome do produto, único dentro da sua arena.
@if ($categories->isEmpty()) {{-- SEM CATEGORIA NÃO HÁ PRODUTO: a coluna é NOT NULL e o campo é obrigatório. Um select vazio com `required` deixaria o usuário preso, clicando em "Cadastrar" sem entender o que falta — então a tela diz o que fazer e leva até lá. --}}
Você ainda não tem categorias. Todo produto pertence a uma, então cadastre a primeira categoria antes de continuar.
@else @error('product_category_id')
{{ $message }}
@enderror
Como este produto aparece agrupado na loja.
@endif
R$ {{-- Texto, não `number`: o usuário digita no formato brasileiro ("1.250,90") e quem converte para centavos é o App\Support\Money, no servidor. `data-mask="money"` formata enquanto se digita — os dígitos entram pela direita, então 1-0-0-0 vira "10,00". `inputmode="numeric"` e não "decimal": no celular o teclado só precisa de números, já que a vírgula e o ponto são postos pela máscara. Mesmo gancho do campo de valor do financeiro. --}} @error('price')
{{ $message }}
@enderror
O valor cobrado pelo produto.
@if ($editing && $product->imageUrl())
Imagem de {{ $product->name }}
@endif @error('image')
{{ $message }}
@enderror
JPG, PNG ou WEBP, até 5 MB. @if ($editing && $product->imageUrl()) Envie uma nova para substituir a atual; deixe em branco para mantê-la. @endif