laravel Nicht vorbereiten route ... für die Serialisierung. Verwendet Schließung
Wenn ich Cache löschen in meinem Laravel 5.2 Projekt, sehe ich diese Fehlermeldung:
[LogicException]
Nicht vorbereiten route [Systemsteuerung] für die Serialisierung. Verwendet Schließung.
Denke ich, dass es im Zusammenhang mit einer route
Route::get('/article/{slug}', 'Front@slug');
Zusammenhang mit einer bestimmten Methode in meinem controller:
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));
}`
Kurz gesagt, von einem Meister ich pass $slug, das ist ein Kurzlink auf den Artikel, mit $slug , das ist einmalig in der Datenbank, die ich identifizieren den Datensatz und dann gebe ich es den Inhalt der detail-Ansicht.
Ich habe keine Probleme haben, wenn ich schrieb die Methode, infact es funktionierte wie ein Charme, aber nachdem ich gereinigt caches, bekomme ich diesen Fehler und die links in der master-Ansicht zeigen keine shortcode.
Wo bin ich falsch?
InformationsquelleAutor Francesco | 2017-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, das ist es nicht. Die Fehlermeldung kommt von der
route:cache
Befehl, nicht sicher, warum das löschen des cache ruft diese automatisch.Das problem ist eine route, die mit einem Verschluss versehen statt eines Controllers, die wie folgt aussieht:
Da die Verschlüsse können nicht serialisiert werden, können Sie nicht cache-Routen, wenn Sie Routen, die Verwendung Verschlüsse.
Ich glaube nicht, dass es ein bug ist, da es ausdrücklich gesagt in Laravel docs laravel.com/docs/5.7/deployment#optimization (siehe Abschnitt Optimieren der Route Laden)
Da dieses feature nutzt die PHP-Serialisierung, Sie kann nur cache-Routen für Anwendungen, die ausschließlich controller-basierten Routen. PHP ist nicht in der Lage zu serialisieren Verschlüsse. Also nicht die php artisan route:cache ist der richtige Weg! Verwenden Sie einfach die php artisan-cache:clear
InformationsquelleAutor tkausl
Wenn keine der Routen enthalten, die Verschlüsse, aber Sie sind immer noch diese Fehlermeldung bekommen, überprüfen Sie bitte
Laravel fügt eine default-auth-api-route zu über-Datei (ich glaube es ist so, wenn wir rufen
php artisan make:auth
)denen Stellung genommen werden kann oder ersetzt werden mit einem Aufruf der controller-Methode, wenn erforderlich:
InformationsquelleAutor Manpreet