suchen
HeimBackend-EntwicklungPHP-TutorialLaravel Quick Tipp: Modellroutenbindung

Laravel Routing -Komponente: Vereinfachen und effiziente Routing -Management

In diesem Artikel wird die leistungsstarke Routing -Komponente von Laravel erörtert, die einfache und effiziente Routing -Management -Methoden bietet und einfache URLs, Parameter, Gruppen, Benennung und Ereignisschutz von Routing -Gruppen unterstützt. Die Funktion der Routing -Modellbindungsfunktion vereinfacht die Verarbeitung von sich wiederholenden Aufgaben, indem sie den Modellnamen anstelle des ID -Parameters auffordert.

Laravel Quick Tip: Model Route Binding

Kernpunkte:

    Die Routing -Komponente von
  • Laravel bietet einfache und effiziente Routing -Management -Methoden, die einfache URLs, Parameter, Gruppen, Benennung und Ereignisschutz -Routing -Gruppen unterstützen. Die Routing -Modellbindungsfunktion vereinfacht die sich wiederholende Aufgabenverarbeitung, indem sie den Modellnamen und nicht die ID -Parameter auffordert.
  • Die Routing -Modellbindung von
  • Laravel analysiert das Modell automatisch mit ID -Parametern und bringt eine Ausnahme aus, wenn das Modell nicht vorhanden ist. Die Methode App\Exceptions\Handler@render ist für die Konvertierung der Ausnahme in eine HTTP -Antwort verantwortlich und kann verwendet werden, um ModelNotFoundException zu verarbeiten und auf eine 404 -Seite umzuleiten.
  • laravel ermöglicht eine benutzerdefinierte Routing -Modellbindung, wie z. Dies hilft zu vermeiden, interne IDs dem Endbenutzer auszusetzen. getRouteKeyName

Beispiel: Backend -Kategorie verwalten

Angenommen, es gibt eine Reihe von Kategorien in der Datenbank, die Administratoren im Hintergrund verwalten können. Die Routing -Datei lautet wie folgt:

Die
Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => 'admin'], function () {
    Route::resource('categories', 'CategoriesController');
});

Klasse enthält sieben Ressourcenmethoden. In der CategoriesController -Operation müssen Sie überprüfen, ob die zu bearbeitende Kategorie in der Datenbank vorhanden ist. Andernfalls wird eine Fehlermeldung zurückgegeben und umgeleitet: edit

public function edit($id)
{
    $category = Category::find($id);
    if (!$category) {
        return redirect()->route('admin.categories.index')->withErrors([trans('errors.category_not_found')]);
    }

    // ...
}

Routing -Modellbindung

Dies ist eine gängige Praxis, aber Laravel bietet eine optimiertere Art und Weise, wie Routing -Modellbindung. Geben Sie einfach den Modellnamen ein, es sind keine ID -Parameter erforderlich.

Die verfügbare Routenliste lautet wie folgt:

<code>+--------+-----------+------------------------------------+------------------------------------+----------------------------------------------------------------------+-----------------+
| Domain | Method    | URI                                | Name                               | Action                                                               | Middleware      |
+--------+-----------+------------------------------------+------------------------------------+----------------------------------------------------------------------+-----------------+
|        | GET|HEAD  | admin/categories                   | admin.categories.index             | App\Http\Controllers\Admin\CategoriesController@index                | web,admin       |
|        | POST      | admin/categories                   | admin.categories.store             | App\Http\Controllers\Admin\CategoriesController@store                | web,admin       |
|        | GET|HEAD  | admin/categories/create            | admin.categories.create            | App\Http\Controllers\Admin\CategoriesController@create               | web,admin       |
|        | GET|HEAD  | admin/categories/{categories}      | admin.categories.show              | App\Http\Controllers\Admin\CategoriesController@show                 | web,admin       |
|        | PUT|PATCH | admin/categories/{categories}      | admin.categories.update            | App\Http\Controllers\Admin\CategoriesController@update               | web,admin       |
|        | DELETE    | admin/categories/{categories}      | admin.categories.destroy           | App\Http\Controllers\Admin\CategoriesController@destroy              | web,admin       |
|        | GET|HEAD  | admin/categories/{categories}/edit | admin.categories.edit              | App\Http\Controllers\Admin\CategoriesController@edit                 | web,admin       |</code>
Routing -Parameter sind

, die bei Bedarf geändert werden können. Laravel bietet eine Option, um es zu ändern: {categories}

Route::resource('categories', 'CategoriesController', [
    'parameters' => 'singular',
]);
modifizierte Route:

<code>+--------+-----------+------------------------------------+------------------------------------+----------------------------------------------------------------------+-----------------+
| Domain | Method    | URI                                | Name                               | Action                                                               | Middleware      |
+--------+-----------+------------------------------------+------------------------------------+----------------------------------------------------------------------+-----------------+
|        | GET|HEAD  | admin/categories                   | admin.categories.index             | App\Http\Controllers\Admin\CategoriesController@index                | web,admin       |
|        | POST      | admin/categories                   | admin.categories.store             | App\Http\Controllers\Admin\CategoriesController@store                | web,admin       |
|        | GET|HEAD  | admin/categories/create            | admin.categories.create            | App\Http\Controllers\Admin\CategoriesController@create               | web,admin       |
|        | GET|HEAD  | admin/categories/{category}        | admin.categories.show              | App\Http\Controllers\Admin\CategoriesController@show                 | web,admin       |
|        | PUT|PATCH | admin/categories/{category}        | admin.categories.update            | App\Http\Controllers\Admin\CategoriesController@update               | web,admin       |
|        | DELETE    | admin/categories/{category}        | admin.categories.destroy           | App\Http\Controllers\Admin\CategoriesController@destroy              | web,admin       |
|        | GET|HEAD  | admin/categories/{category}/edit   | admin.categories.edit              | App\Http\Controllers\Admin\CategoriesController@edit                 | web,admin       |</code>

Hinweis: Laravel 5.3 verwendet standardmäßig die Singularform.

public function edit(Category $category)
{
    return view('admin.categories.edit', [
        'category'      => $category
    ]);
}
laravel wird nun die Kategorie automatisch mit dem ID -Parameter analysieren und eine Ausnahme auswerfen, wenn das Modell nicht vorhanden ist.

Hinweis: Wenn der Parameter keinen Standardwert hat, wird die eloquente Methode zur Analyse der Parameter verwendet. findOrFail

Ausnahmebehandlung Die Methode

ist für die Konvertierung von Ausnahmen in HTTP -Antworten verantwortlich. Wir werden es verwenden, um App\Exceptions\Handler@render zu verarbeiten und auf die 404 -Seite umzuleiten. ModelNotFoundException

Diese Methode hat die Parameter

und request, mit der die zur Durchführung der Aktion bestehende Aktion bestimmen kann. exception

Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => 'admin'], function () {
    Route::resource('categories', 'CategoriesController');
});

Wir testen, ob die geworfene Ausnahme eine Instanz von ModelNotFoundException ist. Wir können den Modellnamen auch testen, um die richtige Fehlermeldung anzuzeigen. Um zu vermeiden, dass alle Modelle mehrere if -Tests hinzugefügt werden, können wir ein Array von indizierten Nachrichten erstellen und mit dem Modellklassenname die richtigen Nachrichten extrahieren.

Parameteranalyse

Laravel verwendet Namen und Typ -Tipps, um Routing -Parameter aufzulösen. Wenn der Parametertyp ein Modell ist, versucht er, Datensätze in der Datenbank mithilfe der ID nachzuschlagen, und fällt fehl, wenn der Datensatz nicht gefunden werden kann.

Benutzerdefinierte Routing -Schlüssel

Um zu vermeiden, dass interne IDs Endbenutzern ausgesetzt werden, werden normalerweise UUIDs verwendet. Da Laravel jedoch Tabellen -Primärschlüssel verwendet, um gebundene Parameter zu analysieren, wird immer ein Fehler geworfen!

, um dies zu tun, ermöglicht es uns Laravel, die getRouteKeyName -Methode der übergeordneten Modellklasse neu zu schreiben. Diese Methode sollte den Eigenschaftsnamen in diesem Fall uUid zurückgeben.

public function edit($id)
{
    $category = Category::find($id);
    if (!$category) {
        return redirect()->route('admin.categories.index')->withErrors([trans('errors.category_not_found')]);
    }

    // ...
}

Wenn wir nun versuchen, eine bestimmte Kategorie mit UUID zu bearbeiten, sollte sie wie erwartet funktionieren, z.

Laravel Quick Tip: Model Route Binding

FAQs auf Laravel Routing -Modellbindung

(Dieser Teil des Inhalts wurde im Originaltext ausführlich beantwortet und wird hier nicht beschrieben) Ich hoffe, der obige Inhalt wird Ihnen hilfreich sein!

Das obige ist der detaillierte Inhalt vonLaravel Quick Tipp: Modellroutenbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
PHP -Leistungsstimmung für Websites mit hohem VerkehrPHP -Leistungsstimmung für Websites mit hohem VerkehrMay 14, 2025 am 12:13 AM

Thesecrettokeepingaphp-betriebene WebsiterunningSmoothyunderheavyLoadInvolvesseveralkeyStrategies: 1) ImplementoPCodeCachingWithopcachetoreducescholexexexcutiontime, 2) verwendetatabasequerycachingwithredolesendatabaSelaDaLoadaLoadaLoadaLoad, 3) LeveragecdnslikecloudLesendatabaselaSelaSelaSelaSelaSelaSelaSelaSelaSelaSeladinaSelaSelaSelaSelaSeladinaSelaSeladin

Abhängigkeitsinjektion in PHP: Code Beispiele für AnfängerAbhängigkeitsinjektion in PHP: Code Beispiele für AnfängerMay 14, 2025 am 12:08 AM

Sie sollten sich um die Abhängigkeitsinjektion (DI) kümmern, da Ihr Code klarer und leichter zu warten ist. 1) DI macht es modularer durch Entkopplung von Klassen, 2) verbessert die Bequemlichkeit von Tests und Code -Flexibilität, 3) DI -Container verwenden, um komplexe Abhängigkeiten zu verwalten, aber auf die Auswirkungen auf die Leistung und die kreisförmigen Abhängigkeiten zu achten, 4) Die beste Praxis besteht darin, sich auf abstrakte Schnittstellen zu verlassen, um lose Koupleln zu erreichen.

PHP -Leistung: Ist es möglich, die Anwendung zu optimieren?PHP -Leistung: Ist es möglich, die Anwendung zu optimieren?May 14, 2025 am 12:04 AM

Ja, optimizingaphpapplicationSispossiblandinential.1) ImplementCachingusedapcutoredatabaSeload.2) optimizedatabases-withindexing, effizienteQuerien und AnconnectionPooling.3) EnhanceCodewithbuilt-Infunktionen, Vermeidung von Globalvariablungen und UsusepcodeCodeCecess

PHP -Leistungsoptimierung: Der ultimative LeitfadenPHP -Leistungsoptimierung: Der ultimative LeitfadenMay 14, 2025 am 12:02 AM

TheKeyStrategieS significantBoostPhpapplicationPlicationperformanceare: 1) UseOpCodeCaching-likeopcachetoreduceExecutiontime, 2) optimizedatabaseInteractionswithprepararedStatements undProperIndexing, 3) configureWebserverSLIKENGINXWITHPHP-FPMFRMFRETBETTERPERSPRIGUNG, 4), 4), 4), 4), 4))

PHP -Abhängigkeitsinjektionsbehälter: Ein schneller StartPHP -Abhängigkeitsinjektionsbehälter: Ein schneller StartMay 13, 2025 am 12:11 AM

APHPDependencyInjectionContainerisatoolthatmanagesClass -Abhängigkeiten, EnhancingCodemodularität, Testbarkeit und Maschinenbarkeit.

Abhängigkeitsinjektion im Vergleich zum Service -Locator in PHPAbhängigkeitsinjektion im Vergleich zum Service -Locator in PHPMay 13, 2025 am 12:10 AM

Wählen Sie die Abhängigkeitsinjektion (DI) für große Anwendungen. Der Servicelocator ist für kleine Projekte oder Prototypen geeignet. 1) DI verbessert die Testbarkeit und Modularität des Codes durch Konstruktorinjektion. 2) Servicelocator erhält Dienstleistungen durch die Zentrumregistrierung, was bequem ist, aber zu einer Erhöhung der Codekupplung führen kann.

PHP -Leistungsoptimierungsstrategien.PHP -Leistungsoptimierungsstrategien.May 13, 2025 am 12:06 AM

PhpapplicationscanbeoptimizedforspeedandefficiencyBy: 1) EnabgingOpcacheinphp.ini, 2) usePreparedStatementsWithpdoFordatabasequeries, 3) Ersatzloopswitharray_Filterandarray_mapfordataprozessing, 4) Konfigurieren von), 4), implementieren, 5)

PHP -E -Mail -Validierung: Stellen Sie sicher, dass E -Mails korrekt gesendet werdenPHP -E -Mail -Validierung: Stellen Sie sicher, dass E -Mails korrekt gesendet werdenMay 13, 2025 am 12:06 AM

PhpemailvalidationInvolvesthreesteps: 1) Formatvalidationusing -RegularexpressionStocheckTheemailformat; 2) DnsvalidationToensurethedomainhasavalidmxRecord;

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool