# Livewire && Laravel Localization: The GET method is not supported for route livewire/update 404

## Livewire && mcamara/laravel-localization: The GET method is not supported for route livewire/update 404

## Introducción

Es terrible cuando aparecen los errores 404 en tu app con livewire. El mundo se apaga a tu alrededor y comienzas un viaje en el que no hay mucha información, hay mucha mezcla de datos inconexos y tu no sabes que hacer.

Voy a tratar este escenario, con todos los datos para que el que llegue aquí, sepa de que estamos hablando, por que es un caso concreto para un mismo enunciado: **The GET method is not supported for route livewire/update 404**

## Escenario

En un aplicación que usa [Laravel 11](https://laravel.com/), [FilamentAdmin](https://filamentphp.com/) y por extensión [Livewire](https://laravel-livewire.com/) multi idioma, basado en la librería [LaravelLocalization](https://github.com/mcamara/laravel-localization). 

La cuestión es que al hacer click en el icono de expansión de un acordeón (accordion) típico de una sección FAQ, me saltaba un terrible error 404.

![Barra de depuración : Herramientas del desarrollador](https://multimedia.castris.com/imagenes/wiki/laravel/error404-livewire-update.jpg)

En la barra de debugger al margen de ver `POST livewire/update` vemos su error.

```
The route es could not be found.
vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php#44
Symfony\Component\HttpKernel\Exception\NotFoundHttpException

            return $this->getRouteForMethods($request, $others);
        }

        throw new NotFoundHttpException(sprintf(
            'The route %s could not be found.',
            $request->path()
        ));
```

Lo primero que pensamos es: `bueno, esto trata de añadir a la configuracion de Laravel Localization, una exclusion de ese path` aunque habría que pensar que el método `POST` ya esta excluido, luego no tiene sentido.

```php
    'urlsIgnored' => [
        '/admin',
        '/admin/*',
        '/admin/multimedia',
        '/storage/*',
        '/articles/*',
        '/_debugbar/*',
        '/colours',
        //'/livewire/*',
    ],

    'httpMethodsIgnored' => ['POST', 'PUT', 'PATCH', 'DELETE'],
```

Así que no va por ahi.

Recuerdos de un 404 en [Problem with site in production: livewire.js and app.js 404](https://laracasts.com/discuss/channels/vite/problem-with-site-in-proudcction-livewirejs-and-appjs-404) y de otro tip con FilamentAdmin v3, para añadir al `composer.json` en la sección `scripts.post-update-cmd` ` "@php artisan vendor:publish --tag=livewire:assets --ansi --force"`

Pero no. Eso ya lo uso. 

La solución pasa por algo que esta en la documentación de Livewire, pero de esas cosas que pasan desapercibidas, como [Configuring Livewire's update endpoint](https://livewire.laravel.com/docs/installation#configuring-livewires-update-endpoint)

- Añadir a la ruta que usa la localización en el frontend

```php
Route::group(['prefix' => LaravelLocalization::setLocale()], function() {
    Route::get('/', [HomeController::class, 'index']);

    Route::get('/blog', [BlogController::class, 'index'])->name('blog.index');
    Route::get('/blog/{article:slug}', [BlogController::class, 'article'])->name('blog.article');

    // Esto es lo que hay que añadir
    Livewire::setUpdateRoute(function ($handle) {
        return Route::post('/livewire/update', $handle);
    });
});
```


##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/store/soporte-profesional).