Ein ähnlicher Fehler tritt beim Aufrufen der route() Helfer direkt:
route('/preferences/' . Auth::user()->id');
Ich glaube, ich verstehe die Dokumentation zu diesem Thema falsch, aber ich habe eine Route für PATCH-Anforderungen mit einem bestimmten Parameter definiert und diese in der Ansicht korrekt eingestellt. Was übersehe ich hier?
Definieren Sie Ihre Namespaces unter Path Route Controller.
Danke für deine Antwort. Ich dachte, die Routenmodellbindung ist nur erforderlich, um ganze Objekte an die Route zu übergeben, nicht nur einen ganzzahligen Parameter? Trotzdem habe ich versucht, ein Modell zu registrieren user von App\User an den Router, aber das funktioniert immer noch nicht. Auch versucht, es mit einer Schließung in der Route zu testen, anstatt die controllers-Methode aufzurufen.
– Ben Fransen
25. Februar 2015 um 9:06 Uhr
Das route() -Methode, die aufgerufen wird, wenn Sie dies tun ['route' => 'someroute'] in einer Formularöffnung, will das, was a genannt wird benannte Strecke. Sie geben einer Route einen Namen wie diesen:
Das heißt, Sie machen das zweite Argument der Route zu einem Array, in dem Sie sowohl den Routennamen (die as) und was zu tun ist, wenn die Route getroffen wird (die uses).
Wenn Sie dann das Formular öffnen, rufen Sie die Route auf:
Nun, für eine Route ohne Parameter könnten Sie einfach tun 'route' => 'routename'aber da Sie einen Parameter haben, erstellen Sie stattdessen ein Array und geben die Parameter der Reihe nach an.
Da Sie anscheinend die Einstellungen des aktuellen Benutzers aktualisieren, würde ich Ihnen raten, den behandelnden Controller die ID des derzeit angemeldeten Benutzers überprüfen zu lassen und die Aktualisierung darauf zu stützen – es ist nicht erforderlich, die ID einzusenden in der URL und der Route, es sei denn, Ihre Benutzer müssen auch die Einstellungen anderer Benutzer aktualisieren. 🙂
Was ist, wenn die Route eine Ressourcenroute ist, die beispielsweise aus … generiert wird? Route::resource('/users', 'UserController');und route:list zeigt, dass es einen Namen hat users.updateaber wenn ich versuche, die Route zu generieren, gibt es mir diesen Fehler route() nur für explizit benannte Routen funktionieren?
– Bruchowski
6. April 2015 um 23:15 Uhr
egal, eingegraben in die FormBuilder.php Quelle, sieht so aus, als ob das funktioniert route: ['users.update', user]
– Bruchowski
6. April 2015 um 23:25 Uhr
Mein Problem war, dass ich nicht erkannt habe, dass meine Route innerhalb einer Gruppe liegt. Was erforderte, dass ich dem Namen, den ich eingegeben hatte, ein Präfix hinzufügen musste.
– Hossein
16. Juni 2019 um 11:45 Uhr
Bantu-
Dieser Thread ist alt, aber er war der erste, der aufgetaucht ist, also dachte ich, ich teile auch meine Lösung. Abgesehen davon, dass Sie Routen in Ihrer benannt haben routes.php Datei. Dieser Fehler kann auch auftreten, wenn Sie doppelte URLs in Ihrer Routendatei haben, aber mit unterschiedlichen Namen kann der Fehler in diesem Szenario irreführend sein. Beispiel:
Das Ändern eines der Namen löst das Problem. Kopieren, Einfügen und Ermüdung können Sie zu diesem Problem führen :).
Dies hat das Problem für mich gelöst, ich habe die Route entfernt, die ich für das Register erstellt habe (Route::get(‘/register’, ‘Auth\[email protected]’);) und Auth::routes() die Kontrolle übernehmen lassen
– Steve
18. Juli 2017 um 7:59 Uhr
vielen Dank, ich war verrückt danach. Auf jeden Fall gibt es Probleme mit doppelten URLs, selbst wenn Sie unterschiedliche Namen haben. 🙂
– Hashaam Ahmed
15. Oktober 2018 um 8:55 Uhr
ALeX inSide
Wenn keine Route definiert ist, überprüfen Sie die Routing-Datei web.php.
Route::get('/map', '[email protected]')->name('map'); // note the name() method.
Dann können Sie diese Methode in den Ansichten verwenden:
PS: Das __(‘Map’) soll “Map” in die aktuelle Sprache übersetzen.
Und die Liste der Namen für Routen, die Sie mit handwerklichem Befehl sehen können:
php artisan route:list
Vielen Dank! Dank an php artisan route:list Ich stellte fest, dass ich in zwei Routen dieselbe URL definiert hatte: '/same/url/in/both/routes'. Deshalb wurde eine davon nicht in der Routenliste aufgeführt.
– Pathos
8. Oktober 2019 um 17:20 Uhr
Vielen Dank! Rettete mich! route(‘about’) war aus irgendeinem Grund nicht zugänglich, bis ich ->name(‘about’) auf die web.php-Datei für die Route angewendet habe.
– Jeremy
13. Juni 2020 um 15:08 Uhr
Ich verwende Laravel 5.7 und habe alle oben genannten Antworten ausprobiert, aber nichts schien den Punkt zu treffen.
Für mich war es eine ziemlich einfache Lösung, indem die von Laravel erstellten Cache-Dateien entfernt wurden.
Es schien, dass meine Änderungen nicht wiedergegeben wurden und meine Anwendung daher die Routen nicht sah.
Ein bisschen übertrieben, aber ich habe mich entschieden, meinen gesamten Cache gleichzeitig mit den folgenden Befehlen zurückzusetzen:
Der wichtigste hier ist der erste Befehl, der die löscht bootstrap/cache/routes.php Datei.
Der zweite Befehl entfernt die zwischengespeicherten Dateien für die Ansichten, die in der gespeichert sind storage/framework/cache Mappe.
Schließlich löscht der letzte Befehl den Anwendungscache.
wenn Sie den Befehl ausführen
php artisan route:list
Dort sehen Sie alle Ihre registrierten Routen in Tabellenform. Nun, da sehen Sie viele Spalten wie Method , URI , Name , Action .. etc.
Also im Grunde, wenn Sie verwenden Route() Methode, das heißt, es wird nur akzeptiert Name Spaltenwerte und wenn Sie verwenden möchten URI Spaltenwerte, die Sie verwenden sollten URL() Laravel-Methode.
Adiyya Tadikamalla
Noch eine Ursache dafür:
Wenn die Routen werden mit demselben URI überschrieben (Unwissentlich) verursacht es diesen Fehler:
Definieren Sie Ihre Namespaces unter Path Route Controller.
– Safoor Safdar
25. Februar 2015 um 8:51 Uhr
schau mal nach: laravel.com/docs/5.0/routing#route-model-binding
– Safoor Safdar
25. Februar 2015 um 8:51 Uhr
Danke für deine Antwort. Ich dachte, die Routenmodellbindung ist nur erforderlich, um ganze Objekte an die Route zu übergeben, nicht nur einen ganzzahligen Parameter? Trotzdem habe ich versucht, ein Modell zu registrieren
user
vonApp\User
an den Router, aber das funktioniert immer noch nicht. Auch versucht, es mit einer Schließung in der Route zu testen, anstatt die controllers-Methode aufzurufen.– Ben Fransen
25. Februar 2015 um 9:06 Uhr