Es cierto que no se puede enviar un formulario HTML común con PUT. Solamente lo puedes enviar por GET o POST, siendo PUT o PATCH un valor inválido en el HTML.
Por eso necesitas usar una directiva de blade llamada @method
.
La documentación dice en este punto exactamente, que como no puedes hacer las rutas PUT, PATCH o DELETE puedes añadir un campo oculto (input hidden) llamado "_method" que permite emular esos verbos del HTTP.
La directiva @method de Blade te lo puede hacer por ti mismo:
<form action="/enviar" method="POST">
@method('PUT')
Aquí pones tu formulario
</form>
Fíjate que el HTML es POST, pero tú le agregas ese campo oculto con @method('PUT')
o @method('DELETE')
, etc.