Cuando borro las cachés en mi proyecto Laravel 5.2, veo este mensaje de error:
[LogicException] No se puede preparar la ruta [panel] para la serialización. Utiliza cierre.
Creo que esta relacionado con una ruta
Route::get('/article/{slug}', 'Front@slug');
asociado con un método particular en mi controlador:
public function slug($slug) {
$article = Article::where('slug',$slug)->first();
$id = $article ->id_article ;
if ( ($article=== null) || (is_null($id)) ) return view('errors/Db');
else return view('detail')->with(array('article'=> $article, 'title'=>'My title - '.$article->title));
}`
En resumen, desde una vista maestra paso $ slug, que es un enlace corto al artículo, con $ slug, que es único en la base de datos, identifico el registro y luego paso su contenido a la vista detallada.
No tuve ningún problema cuando escribí el método, de hecho funcionó como un encanto, pero después de limpiar las cachés, aparece ese error y los enlaces en la vista maestra no muestran ningún código corto.
¿Dónde estoy haciendo mal?
laravel
serialization
routes
Francesco
fuente
fuente
Respuestas:
No eso no es. El mensaje de error proviene del
route:cache
comando, no estoy seguro de por qué borrar el caché lo llama automáticamente.El problema es una ruta que usa un cierre en lugar de un controlador, que se parece a esto:
// Thats the Closure // v Route::get('/some/route', function() { return 'Hello World'; });
Dado que los cierres no se pueden serializar, no puede almacenar en caché sus rutas cuando tiene rutas que utilizan cierres.
fuente
Si ninguna de sus rutas contiene cierres, pero sigue recibiendo este error, consulte
Laravel tiene una ruta de auth api predeterminada en el archivo anterior.
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
que se puede comentar o reemplazar con una llamada al método del controlador si es necesario.
fuente
Esto definitivamente es un error Laravel ofrece código predefinido en route / api.php
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
que no puede ser procesado por:
Esto definitivamente debería ser arreglado por el equipo de Laravel. (Verifique el enlace ),
simplemente, si desea solucionarlo, debe reemplazar el código route \ api.php con algo como:
Route::middleware('auth:api')->get('/user', 'UserController@AuthRouteAPI');
y en UserController pon este método:
public function AuthRouteAPI(Request $request){ return $request->user(); }
fuente
Verifique sus rutas / web.php y rutas / api.php
Laravel viene con un cierre de ruta predeterminado en routes / web.php:
Route::get('/', function () { return view('welcome'); });
y rutas / api.php
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
si lo elimina, intente nuevamente borrar el caché de ruta.
fuente
La solución real de este problema es cambiar la primera línea en web.php
Simplemente reemplace la ruta de bienvenida con la siguiente ruta
Route::view('/', 'welcome');
Si sigue recibiendo el mismo error que probablemente
fuente
la solustion cuando usamos rutas como esta:
Route::get('/', function () { return view('welcome'); });
laravel los llama Closure para que no pueda optimizar los usos de las rutas, ya que los cierres deben enrutar al controlador para usar
php artisan optimize
fuente
Si alguien todavía está buscando una respuesta, para mí el problema estaba en el archivo routes / web.php. Ejemplo:
Route::get('/', function () { return view('welcome'); });
También es Ruta, así que sí ... ¡Simplemente elimínelo si no es necesario y listo! También debe seguir las respuestas proporcionadas anteriormente.
fuente
compruebe que su archivo web.php tenga esta extensión
use Illuminate\Support\Facades\Route;
mi problema se solucionó de esta manera.
fuente