Routing, laravel oroszul

Alapértelmezett útvonalfájlok

A Laravel összes útvonalát (útvonalait) az útvonalfájlok határozzák meg, amelyek az útvonalak könyvtárában találhatók. Ezeket a fájlokat a keret automatikusan betölti. Az útvonalak / web.php fájl meghatározza a webes felület útvonalait. Ezek az útvonalak a webközvetítők csoportjának részét képezik. amelyek olyan funkciókat biztosítanak, mint a munkamenet állapota és a CSRF-védelem. Az útvonalaktól / api.php fájlból származó útvonalak nem támogatják az államokat, és szerepelnek az api mediációs csoportban.

A legtöbb alkalmazás esetében az útvonalak / web.php fájl útvonalai először meg vannak határozva.

A routes.php fájlt a RouteServiceProvider szolgáltató tölti be, és automatikusan bekerül a webes közvetítő csoportba. amely hozzáférést biztosít a munkamenet állapotához és a CSRF-védelemhez. Az alkalmazásának legtöbb útvonalát ebben a fájlban fogják meghatározni.

Elérhető router módszerek

Az útválasztó lehetővé teszi az útvonalak regisztrálását bármely HTTP-kérelemhez:

Néha olyan útvonalat kell regisztrálni, amely több típusú HTTP kérésre válaszol. Ezt a PHP match () módszerrel lehet elvégezni. Vagy regisztrálhat egy olyan útvonalat, amely válaszol a HTTP kérésekre a PHP bármilyen () metódusával:

Útvonal regisztrálása többféle kérelem esetén

Néha olyan útvonalat kell regisztrálni, amely több típusú HTTP kérésre válaszol. Ezt az Útvonal elején található PHP match () módszerrel lehet elvégezni:

Vagy regisztrálhat egy olyan útvonalat, amely minden típusú HTTP kérésre válaszol bármelyik PHP (bármely) módszerrel:

A PHP url () módszerrel URL-eket hozhat létre az alkalmazás útvonalaihoz:

Útvonal-beállítások

Kötelező paraméterek

Természetesen néha meg kell ragadnia az URI szegmenseket az útvonalon. Például, ha meg kell ragadnia egy felhasználói azonosítót egy URL-ből. Ezt az útvonalparaméterek meghatározásával lehet elvégezni:

Megadhatja annyi paramétert, amennyit csak akar:

Az útvonal paraméterei mindig zárójelben vannak, és abc-betűket kell tartalmazniuk. Az útvonalparaméterek nem tartalmazhatják a - karaktert. Használja alul a _ alá.

Opcionális útvonalparaméterek

Néha meg kell adnia egy útvonalparamétert, de lehet opcionális. Ezt megtehetjük kérdőjellel. a paraméter neve után. Ne felejtsük el beállítani az alapértelmezett értéket a megfelelő útvonalváltozóra:

A rendszeres kifejezések korlátozása

Az útvonalparaméterek formátumát az útvonalpéldány PHPwhere () metódusával korlátozhatja. A PHP where () metódus egy paraméter nevét és egy szabályos kifejezést veszi figyelembe, amely meghatározza a paraméter korlátait:

Ha azt szeretné, hogy a paraméter mindig a megadott szabályos kifejezésre legyen korlátozva, használhatja a PHP minta () metódust. Meg kell határozni ezeket a mintákat a RouteServiceProvider PHP () metódusában:

CSRF védelem

Ez a szakasz releváns az 5.2-es és korábbi verziók esetében. Az 5.3-as verzióban a CSRF-ről szóló külön cikkre került.

Minden alkalommal, amikor egy HTML formát definiál az alkalmazásban, be kell vinnie a CSRF token rejtett mezőjébe, hogy a CSRF-proxy ellenőrizhesse a kérelmet. Rejtett beviteli mező létrehozása _token. amely egy CSRF tokenet tartalmaz, használja a csrf_field () PHP segédfunkciót:

A csrf_field () PHP függvény létrehozza ezt a HTML-kódot:

Nem kell manuálisan ellenőriznie a CSRF tokeneket olyan lekérdezésekben, mint a POST, a PUT vagy a DELETE. közvetítő VerifyCsrfToken. amely a közvetítői webes csoport tagja. automatikusan ellenőrzi a bejövő kérelem tokének mérkőzését a munkamenetben tárolt tokennel.

Az URI-k eltávolítása a CSRF-védelemből

Néha ki kell zárni egy sor URI-t a CSRF-védelemből. Ha például a Stripe-t használja a fizetések feldolgozásához és a webes hacker-rendszerhez, akkor a Laravel CSRF-védelemből ki kell zárnia az útvonalat a webhordozó-kezelőtől.

Az URI-kat kizárhatja a webes mediátorok csoportján kívüli útvonalak meghatározásával. amely szerepel az alapértelmezett routes.php fájlban. vagy az URI-k hozzáadásával a VerifyCsrfToken viszonteladó PHP $ exor tulajdonságához:

X-CSRF-TOKEN

Amellett, hogy a CSRF-kulcsot a "POST" paraméterben keresi. a VerifyCsrfToken proxy azt is ellenőrzi, hogy a kérés fejléc X-CSRF-TOKEN. Például a kulcsot metatagként tárolhatja:

A metatag létrehozásakor. Hozzáadhat egy tokenet az összes kérés fejlécéhez egy könyvtár használatával, mint például a jQuery. Ez egyszerű és kényelmes CSRF-védelmet nyújt az Ön alkalmazásaihoz az AJAX-on alapuló:

X-XSRF-TOKEN

A különbség az X-CSRF token és az X-XSRF token, hogy az első érték egy egyszerű szöveges, és a második - titkosított értéket, mivel a Laravelben található cookie mindig titkosított. Ha a PHP csrf_token () függvény, hogy kulcsfontosságú értékeket. akkor valószínűleg kell használni a címe X-CSRF-jelzőt.

Bind modell

Ha egy modellazonosítót végrehajt egy útvonal vagy vezérlő műveletében, akkor gyakran szükséges az ehhez az azonosítóhoz tartozó modell beszerzése. Bind modellek - kényelmes módja a modell példányainak automatikus végrehajtására közvetlenül az útvonalakra. Például a felhasználói azonosító végrehajtása helyett beágyazza a teljes felhasználói modell példányt. amely megfelel ennek az azonosítónak.

Implicit kötés

A Laravel automatikusan magában foglalja az útvonal vagy vezérlő műveleteiben meghatározott Eloquent modelleket, amelyek változóinak nevei megfelelnek az útvonal szegmensének. Például:

Ebben a példában Laravel automatikusan beilleszt egy példányt a modell, amely azonosító, amely egybeesik a megfelelő értéket a kérelem URI, mert a változó Ékesszóló PHP $ user. meghatározott útvonalon, ugyanaz, mint a URI az útvonal szegmens. Ha a megfelelő modell példány nem található az adatbázisban, a HTTP-válasz 404 automatikusan generált.

Ha azt szeretnénk, hogy a modell osztály oszlop helyett id használt különböző adatbázis-oszlop, akkor felülírja a PHP getRouteKeyName () metódus a modellben Ékesszóló:

Explicit kötés

Egy explicit kötés regisztrálásához használja a PHP modell () metódust az adott paraméter osztályának megadásához. Meg kell határozni a modell explicit csatolását a RouteServiceProvider osztály PHP boot () metódusában: