penghalaan
- penghalaan
- Parameter formula ungkapan biasa
- Penghalaan bernama
- Kumpulan laluan
- Pengikatan model penghalaan Tentukan
- Pengikatan tersirat .
- Penghalaan asas
, berikut ialah cara yang sangat mudah dan elegan untuk menentukan laluan: Route::get('foo', function () { return 'Hello World'; });
Fail penghalaan lalai
Semua laluan Laravel ditakrifkan dalam fail penghalaan dalam direktori
laluan dan fail ini dimuatkan secara automatik oleh rangka kerja. Fail routes/web.php
digunakan untuk menentukan laluan untuk antara mukaweb
. Laluan di sini akan diberikan kepada kumpulan middlewareweb
, yang menyediakan fungsi seperti keadaan sesi dan perlindungan CSRF. Laluan yang ditakrifkan dalamroutes/api.php
adalah tanpa negara dan diberikan kumpulan middlewareapi
.routes
目录中的路由文件中定义,这些文件都由框架自动加载。routes/web.php
文件用于定义web
界面的路由。这里面的路由都会被分配给web
中间件组,它提供了会话状态和 CSRF 保护等功能。定义在routes/api.php
中的路由都是无状态的,并且被分配了api
中间件组。大多数的应用构建,都是以在
routes/web.php
文件定义路由开始的。可以通过在浏览器中输入定义的路由 URL 来访问routes/web.php
中定义的路由。例如,你可以在浏览器中输入http://your-app.dev/user
来访问以下路由Route::get('/user', 'UserController@index');
routes/api.php
文件中定义的路由通过RouteServiceProvider
被嵌套到一个路由组里面。在这个路由组中,会自动添加 URL 前缀/api
到此文件中的每个路由,这样你就无需再手动添加了。你可以在RouteServiceProvider
类中修改此前缀以及其他路由组选项。可用的路由方法
路由器允许你注册能响应任何 HTTP 请求的路由:
Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback);
有的时候你可能需要注册一个可响应多个 HTTP 请求的路由,这时你可以使用
match
方法,也可以使用any
方法注册一个实现响应所有 HTTP 请求的路由:Route::match(['get', 'post'], '/', function () { // }); Route::any('foo', function () { // });
CSRF 保护
指向
web
路由文件中定义的POST
、PUT
或DELETE
路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝。可以在 CSRF 文档 中阅读有关 CSRF 更多的信息:<form method="POST" action="/profile"> @csrf ... </form>
重定向路由
如果要定义重定向到另一个 URI 的路由,可以使用
Route::redirect
方法。这个方法可以快速的实现重定向,而不再需要去定义完整的路由或者控制器:Route::redirect('/here', '/there');
Route::redirect
默认会返回状态码302
。 你可以通过第三个参数自定义返回码:Route::redirect('/here', '/there', 301);
你也可以使用
Kebanyakan binaan aplikasi bermula dengan menentukan laluan dalam failRoute::permanentRedirect
方法来返回301
routes/web.php
. Laluan yang ditakrifkan dalamroutes/web.php
boleh diakses dengan memasukkan URL laluan yang ditentukan ke dalam penyemak imbas. Contohnya, anda boleh memasukkanhttp://your-app.dev/user
dalam penyemak imbas anda untuk mengakses laluan berikutRoute::permanentRedirect('/here', '/there');
yang ditakrifkan dalamroutes/api.php
fail Laluan disarangkan ke dalam kumpulan penghalaan melaluiRouteServiceProvider
. Dalam kumpulan laluan ini, awalan URL/api
ditambahkan secara automatik pada setiap laluan dalam fail ini supaya anda tidak perlu menambahkannya secara manual. Anda boleh mengubah suai awalan ini dan pilihan kumpulan laluan lain dalam kelasRouteServiceProvider
.Kaedah penghalaan yang tersedia🎜Penghala membenarkan anda mendaftarkan laluan yang boleh bertindak balas kepada sebarang permintaan HTTP: 🎜Route::view('/welcome', 'welcome'); Route::view('/welcome', 'welcome', ['name' => 'Taylor']);
🎜Kadangkala anda mungkin perlu mendaftar laluan yang boleh bertindak balas kepada berbilang laluan A untuk permintaan HTTP Dalam kes ini, anda boleh menggunakan kaedahmatch
atau anda boleh menggunakan kaedahmana-mana
untuk mendaftarkan laluan yang bertindak balas kepada. semua permintaan HTTP: 🎜Route::get('user/{id}', function ($id) { return 'User '.$id; });
🎜🎜Perlindungan CSRF🎜🎜Tuding padaPOST
,PUT
atauseperti yang ditakrifkan dalam fail laluan
hendaklah mengandungi medan token CSRF, jika tidak permintaan akan ditolak. Anda boleh membaca lebih lanjut tentang CSRF dalam dokumentasi CSRF: 🎜web
Mana-mana borang HTML yang dihalakan oleh >DELETERoute::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { // });
🎜🎜🎜🎜Laluan ubah hala
🎜Jika anda ingin menentukan laluan yang mengubah hala ke URI lain, anda boleh menggunakan kaedahRoute::redirect
. Kaedah ini boleh melaksanakan ubah hala dengan cepat tanpa perlu menentukan laluan atau pengawal yang lengkap: 🎜Route::get('user/{name?}', function ($name = null) { return $name; }); Route::get('user/{name?}', function ($name = 'John') { return $name; });
🎜Route::redirect
akan mengembalikan kod status302
secara lalai. Anda boleh menyesuaikan kod pemulangan melalui parameter ketiga: 🎜Route::get('user/{name}', function ($name) { // })->where('name', '[A-Za-z]+'); Route::get('user/{id}', function ($id) { // })->where('id', '[0-9]+'); Route::get('user/{id}/{name}', function ($id, $name) { // })->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
🎜 Anda juga boleh menggunakan kaedahRoute::permanentRedirect
untuk mengembalikan kod status301
: 🎜/** * 定义你的路由模型绑定, pattern 过滤器等。 * * @return void */ public function boot(){ Route::pattern('id', '[0-9]+'); parent::boot(); }
🎜🎜🎜 🎜 🎜🎜Lihat penghalaan
Jika laluan anda hanya perlu mengembalikan paparan, anda boleh menggunakan kaedah
Route::view
. Ia sama mudahnya sepertilencong
dan tidak memerlukan penentuan laluan penuh atau pengawal. Kaedahview
mempunyai tiga parameter, yang pertama diperlukan dan merupakan URI yang mengandungi nama paparan. Parameter kedua dan diperlukan ialah nama paparan yang perlu diberikan. Parameter ketiga ialah parameter pilihan Anda boleh menghantar dalam tatasusunan, dan data dalam tatasusunan akan dihantar ke paparan:Route::view
方法。它和redirect
一样方便,不需要定义完整的路由或控制器。view
方法有三个参数,其中第一个是必填参数,是包含视图名称的 URI 。第二个也是必填参数,是需要渲染的视图名称。第三个参数是可选参数,可以传入一个数组,数组中的数据会被传递给视图:Route::get('user/{id}', function ($id) { // 只有在 id 为数字时才执行。 });
路由参数
必填参数
当然,有时需要在路由中捕获一些 URL 片段。例如,从 URL 中捕获用户的 ID,可以通过定义路由参数来执行此操作:
Route::get('search/{search}', function ($search) { return $search; })->where('search', '.*');
也可以根据需要在路由中定义多个参数:
Route::get('user/profile', function () { // })->name('profile');
路由的参数通常都会被放在
{}
内,并且参数名只能为字母,同时路由参数不能包含-
符号,如果需要可以用下划线 (_
) 代替。路由参数会按顺序依次被注入到路由回调或者控制器中,而不受回调或者控制器的参数名称的影响。可选参数
有时,你可能需要指定一个路由参数,但你希望这个参数是可选的。你可以在参数后面加上
?
标记来实现,但前提是要确保路由的相应变量有默认值Route::get('user/profile', 'UserProfileController@show')->name('profile');
正则表达式约束
你可以使用路由实例上的
where
方法约束路由参数的格式。where
方法接受参数名称和定义参数应如何约束的正则表达式:// 生成 URL... $url = route('profile'); // 生成重定向... return redirect()->route('profile');
全局约束
如果你希望某个具体的路由参数都遵循同一个正则表达式的约束,就使用
pattern
方法在RouteServiceProvider
的boot
方法中定义这些模式:Route::get('user/{id}/profile', function ($id) { // })->name('profile'); $url = route('profile', ['id' => 1]);
一旦定义好之后,便会自动应用这些规则到所有使用该参数名称的路由上:
/** * 处理一次请求。 * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next){ if ($request->route()->named('profile')) { // } return $next($request); }
编码正斜杠字符
Laravel 路由组件允许除
/
之外的所有字符。你必须使用where
条件正则表达式显式地允许/
Route::middleware(['first', 'second'])->group(function () { Route::get('/', function () { // // 使用 first 和 second 中间件 }); Route::get('user/profile', function () { // // 使用 first 和 second 中间件 }); });
Parameter penghalaan
Parameter yang diperlukan 🎜🎜 Sudah tentu, kadangkala anda perlu menangkap beberapa serpihan URL dalam laluan anda. Contohnya, untuk menangkap ID pengguna daripada URL, anda boleh melakukan ini dengan menentukan parameter laluan: 🎜Route::namespace('Admin')->group(function () { // 在 "App\Http\Controllers\Admin" 命名空间下的控制器 });
🎜 Anda juga boleh menentukan berbilang parameter dalam laluan seperti yang diperlukan: 🎜Route::domain('{account}.myapp.com')->group(function () { Route::get('user/{id}', function ($account, $id) { // }); });
🎜Parameter laluan biasanya diletakkan dalam{ } , dan nama parameter hanya boleh berupa huruf Pada masa yang sama, parameter penghalaan tidak boleh mengandungi simbol -
Jika perlu, ia boleh digantikan dengan garis bawah (_
). Parameter laluan akan disuntik ke dalam panggilan balik laluan atau pengawal mengikut tertib, tanpa mengira nama parameter panggilan balik atau pengawal. 🎜🎜🎜🎜🎜🎜Parameter pilihan🎜🎜Kadangkala, anda mungkin perlu menentukan parameter penghalaan, tetapi anda Mudah-mudahan parameter ini adalah pilihan. Anda boleh menambah tag?
selepas parameter untuk mencapai ini, tetapi premisnya adalah untuk memastikan bahawa pembolehubah sepadan laluan mempunyai nilai lalai🎜Route::prefix('admin')->group(function () { Route::get('users', function () { // 匹配包含 "/admin/users" 的 URL }); });
🎜🎜🎜🎜🎜Kekangan ungkapan biasa🎜🎜Anda boleh mengekang format parameter laluan menggunakan kaedahwhere
pada contoh laluan . Kaedahwhere
menerima nama parameter dan ungkapan biasa yang mentakrifkan cara parameter harus dikekang: 🎜Route::name('admin.')->group(function () { Route::get('users', function () { // 指定路由名为 "admin.users"... })->name('users');});
🎜Kekangan global
🎜Jika anda mahu parameter penghalaan tertentu mengikut kekangan ungkapan biasa yang sama, gunakan kaedahcorak
dalam kaedahboot
RouteServiceProvider< /code> Tentukan corak ini dalam: 🎜
Route::get('api/users/{user}', function (App\User $user) { return $user->email; });
🎜Setelah ditakrifkan, peraturan ini akan digunakan secara automatik pada semua laluan menggunakan nama parameter ini: 🎜/** * 获取该模型的路由的自定义键名。 * * @return string */ public function getRouteKeyName(){ return 'slug'; }
🎜Pengekodan aksara miring ke hadapan
🎜Komponen penghalaan Laravel membenarkan semua aksara kecuali/
. Anda mesti secara eksplisit membenarkan/
menjadi sebahagian daripada pemegang tempat menggunakandi mana
regex bersyarat: 🎜public function boot(){ parent::boot(); Route::model('user', App\User::class); }
🎜 NOTA: Aksara slash ke hadapan yang dikodkan hanya dalam segmen laluan terakhir disokong. 🎜🎜🎜🎜🎜🎜🎜Nama laluan
Nama laluan boleh menjana URL atau ubah hala dengan mudah untuk laluan tertentu. Anda boleh menentukan nama laluan dengan merantai kaedah
name
pada definisi laluan:name
方法可以指定路由名称:Route::get('profile/{user}', function (App\User $user) { // });
你还可以指定控制器行为的路由名称:
/** * 启动应用服务。 * * @return void */ public function boot(){ parent::boot(); Route::bind('user', function ($value) { return App\User::where('name', $value)->first() ?? abort(404); }); }
生成指定路由的 URL
为路由指定了名称后,就可以使用全局辅助函数
route
来生成链接或者重定向到该路由:/** * 检索绑定值的模型。 * * @param mixed $value * @return \Illuminate\Database\Eloquent\Model|null */ public function resolveRouteBinding($value){ return $this->where('name', $value)->first() ?? abort(404); }
如果是有定义参数的命名路由,可以把参数作为
route
函数的第二个参数传入,指定的参数将会自动插入到 URL 中对应的位置:Route::fallback(function () { // });
检查当前路由
如果你想判断当前请求是否指向了某个路由,你可以调用路由实例上的
named
方法。例如,你可以在路由中间件中检查当前路由名称:Route::middleware('auth:api', 'throttle:60,1')->group(function () { Route::get('/user', function () { // }); });
路由组
路由组允许你在大量路由之间共享路由属性,例如中间件或命名空间,而不需要为每个路由单独定义这些属性。共享属性应该以数组的形式传入
Route::group
方法的第一个参数中。中间件
要给路由组中所有的路由分配中间件,可以在 group 之前调用
middleware
方法,中间件会依照它们在数组中列出的顺序来运行:Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () { Route::get('/user', function () { // }); });
命名空间
另一个常见用例是使用
namespace
方法将相同的 PHP 命名空间分配给路由组的中所有的控制器:<form action="/foo/bar" method="POST"> <input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> </form>
请记住,默认情况下,
RouteServiceProvider
会在命名空间组中引入你的路由文件,让你不用指定完整的AppHttpControllers
命名空间前缀就能注册控制器路由。因此,你只需要指定命名空间AppHttpControllers
之后的部分。子域名路由
路由组也可以用来处理子域名。子域名可以像路由 URI 一样被分配路由参数,允许你获取一部分子域名作为参数给路由或控制器使用。可以在 group 之前调用
domain
方法来指定子域名:<form action="/foo/bar" method="POST"> @method('PUT') @csrf </form>
路由前缀
可以用
prefix
$route = Route::current(); $name = Route::currentRouteName(); $action = Route::currentRouteAction();
Anda juga boleh menentukan nama laluan tindakan pengawal:rrreee
Jana URL laluan yang ditentukan
Selepas menentukan nama untuk laluan, anda boleh menggunakan fungsi pembantu globallaluan untuk menjana pautan atau ubah hala ke laluan: rrreee Jika ia adalah laluan bernama dengan parameter yang ditentukan, anda boleh lulus parameter sebagai parameter kedua fungsirrreeeroute
, dan parameter yang ditentukan akan dimasukkan secara automatik ke kedudukan yang sepadan dalam URL:🎜Semak laluan semasa
🎜Jika anda ingin menentukan sama ada permintaan semasa menghala ke laluan tertentu, anda boleh memanggil kaedahbernama pada kod contoh laluan>. Sebagai contoh, anda boleh menyemak nama laluan semasa dalam perisian tengah penghalaan: 🎜rrreee🎜🎜🎜
🎜🎜route-groups 🎜🎜 Kumpulan laluan membolehkan anda berkongsi sifat laluan, seperti perisian tengah atau ruang nama, merentas sebilangan besar laluan tanpa perlu menentukan sifat ini secara individu untuk setiap laluan. Sifat yang dikongsi hendaklah dihantar ke dalam parameter pertama kaedahRoute::group
dalam bentuk tatasusunan. 🎜🎜🎜🎜🎜Middleware
🎜Untuk memberikan semua laluan dalam kumpulan penghalaan Kepada memperuntukkan middleware, anda boleh memanggil kaedahmiddleware
sebelum kumpulan Middleware akan dijalankan mengikut susunan yang disenaraikan dalam tatasusunan: 🎜rrreee🎜 🎜 🎜🎜Namespace
🎜Satu lagi kes penggunaan biasa ialah menggunakan kaedahnamespace
untuk menetapkan ruang nama PHP yang sama kepada Semua pengawal dalam kumpulan laluan: 🎜rrreee🎜 Ingat bahawa secara lalai,RouteServiceProvider
akan mengimport fail laluan anda dalam kumpulan ruang nama, menyelamatkan anda daripada perlu menentukanAppHttpControllers
penuh Awalan ruang nama boleh digunakan untuk mendaftarkan laluan pengawal. Oleh itu, anda hanya perlu menentukan bahagian selepas ruang namaAppHttpControllers
. 🎜🎜🎜🎜🎜Subdomain routing
🎜Routing group juga Boleh digunakan untuk mengendalikan subdomain. Subdomain boleh diberikan parameter laluan sama seperti URI laluan, membolehkan anda mendapatkan sebahagian daripada subdomain sebagai parameter untuk laluan atau pengawal. Anda boleh memanggil kaedahdomain
sebelum kumpulan untuk menentukan nama subdomain: 🎜rrreee🎜🎜🎜🎜Awalan penghalaan
🎜Anda boleh menggunakan kaedahawalan
untuk menambah awalan pada URL yang diberikan dalam kumpulan penghalaan. Sebagai contoh, anda boleh memberi awalan URI bagi semua laluan dalam kumpulan dengan pentadbir: 🎜rrreee🎜🎜🎜🎜🎜🎜Awalan Nama Laluan
Kaedah nama boleh digunakan untuk menambah rentetan yang diberikan pada setiap nama laluan dalam kumpulan laluan. Sebagai contoh, anda mungkin mahu memberi awalan nama semua laluan kumpulan dengan "pentadbir." Rentetan yang diberikan adalah betul-betul sama dengan awalan nama laluan yang ditentukan, jadi kami akan memastikan untuk menyediakan aksara
rrreeedi belakang.
dalam awalan:.
字符:路由模型绑定
当向路由或控制器行为注入模型 ID 时,就需要查询这个 ID 对应的模型。Laravel 为路由模型绑定提供了一个直接自动将模型实例注入到路由中的方法。例如,你可以注入与给定 ID 匹配的整个
User
模型实例,而不是注入用户的 ID。隐式绑定
Laravel 会自动解析定义在路由或控制器行为中与类型提示的变量名匹配的路由段名称的 Eloquent 模型。例如:
rrreee在这个例子中,由于
$user
变量被类型提示为 Eloquent 模型AppUser
,变量名称又与 URI 中的{user}
匹配,因此,Laravel 会自动注入与请求 URI 中传入的 ID 匹配的用户模型实例。如果在数据库中找不到对应的模型实例,将会自动生成 404 异常。自定义键名
如果你想要模型绑定在检索给定的模型类时使用除
rrreeeid
之外的数据库字段,你可以在 Eloquent 模型上重写getRouteKeyName
方法:显式绑定
要注册显式绑定,使用路由器的
rrreeemodel
方法来为给定参数指定类。在RouteServiceProvider
类中的boot
方法内定义这些显式模型绑定:接着,定义一个包含
rrreee{user}
参数的路由:因为我们已经将所有
< /a>{user}
参数绑定至AppUser
模型,所以User
实例将被注入该路由。例如,profile/1
的请求会注入数据库中 ID 为 1 的User
rrreeePengikatan model laluan
Apabila menyuntik ID model ke dalam laluan atau gelagat pengawal, anda perlu bertanya ID model sepadan. Laravel menyediakan cara untuk mengikat model laluan secara langsung dan secara automatik menyuntik contoh model ke dalam laluan. Sebagai contoh, bukannya menyuntik ID pengguna, anda boleh menyuntik keseluruhan contoh model🎜🎜User
yang sepadan dengan ID yang diberikan.🎜🎜Implicit binding🎜🎜Laravel akan menyelesaikan definisi secara automatik dalam laluan atau pengawal Eloquent model untuk nama segmen laluan dalam tingkah laku yang sepadan dengan nama pembolehubah yang dibayangkan jenis. Contohnya: 🎜rrreee🎜Dalam contoh ini, memandangkan pembolehubah$user
ditunjuk taip pada model EloquentAppUser
, nama pembolehubah adalah sama dengan{user}< dalam URI. /code> sepadan, jadi Laravel secara automatik menyuntik contoh model pengguna yang sepadan dengan ID yang diluluskan dalam URI permintaan. Jika contoh model yang sepadan tidak ditemui dalam pangkalan data, pengecualian 404 akan dijana secara automatik. 🎜
🎜Nama kunci tersuai
🎜Jika anda mahu pengikatan model digunakan selain daripadaid apabila mendapatkan semula kelas model tertentu Untuk medan pangkalan data selain
, anda boleh mengatasi kaedahgetRouteKeyName
pada model Eloquent: 🎜rrreee🎜🎜🎜🎜Pengikatan eksplisit🎜🎜Untuk mendaftarkan pengikatan eksplisit, gunakan kaedahmodel
penghala untuk menentukan kelas bagi parameter yang diberikan. Tentukan pengikatan model eksplisit ini dalam kaedahboot
dalam kelasRouteServiceProvider
: 🎜rrreee🎜Seterusnya, tentukan parameter{user}
Route: 🎜rrreee 🎜Oleh kerana kami telah mengikat semua parameter{user}
pada modelAppUser
, tikaUser
akan disuntik ke dalam laluan ini. Sebagai contoh, permintaan untukprofile/1
akan menyuntik contohUser
dengan ID 1 dalam pangkalan data. 🎜🎜Jika contoh model yang sepadan tidak ditemui dalam pangkalan data, pengecualian 404 akan dibuang secara automatik. 🎜🎜🎜Penghuraian logik tersuai
Jika anda ingin menggunakan logik penghuraian tersuai, gunakan kaedah
rrreeeRoute::bind
.penutupan
yang dihantar kepada kaedahbind
akan menerima nilai yang sepadan dengan pendakap dalam URI dan mengembalikan contoh kelas yang anda ingin suntik dalam laluan:Route::bind
方法。传递到bind
方法的闭包
会接受 URI 中大括号对应的值,并且返回你想要在该路由中注入的类的实例:或者,您可以重写 Eloquent 模型上的
rrreeeresolveRouteBinding
方法。 此方法会接受 URI 中大括号对应的值,并且返回你想要在该路由中注入的类的实例:回退路由
使用
rrreeeRoute::fallback
方法, 你可以定义在没有其他路由匹配传入请求时执行的路由。通常,未处理的请求会通过应用程序的异常处理程序自动呈现 “404” 页面。 但是,因为你可以在routes/web.php
文件中定义fallback
路由,web
中间件的所有中间件都将应用到路由中。 当然,你也可以根据需要向这条路由中添加额外的中间件:{note} 回退路由应始终是你应用程序注册的最后一个路由。
访问控制
Laravel 包含了一个 middleware 用于控制应用程序对路由的访问。 如果想要使用, 请将
rrreeethrottle
中间件分配给一个路由或者一个路由组。throttle
中间件会接收两个参数,这两个参数决定了在给定的分钟数内可以进行的最大请求数。例如,让我们指定一个经过身份验证并且用户每分钟访问频率不超过 60 次的路由组:动态访问控制
你可以根据已验证的
rrreeeUser
模型的属性,指定动态请求的最大值。例如,如果你的User
模型包含rate_limit
属性,则可以将属性名称传递给throttle
中间件,以便它用于计算最大请求数:表单方法伪造
HTML 表单不支持
rrreeePUT
、PATCH
或DELETE
行为。所以当你要从 HTML 表单中调用定义了PUT
、PATCH
或DELETE
行为的路由时,你将需要在表单中增加一个隐藏的_method
输入标签。使用_method
字段的值作为 HTTP 的请求方法:你也可以使用
atau , anda boleh mengatasi kaedah@method
模板指令生成_method
rrreeeresolveRouteBinding
pada model Eloquent. Kaedah ini akan menerima nilai yang sepadan dengan pendakap kerinting dalam URI dan mengembalikan contoh kelas yang anda ingin suntik dalam laluan:Menggunakan kaedahLaluan Undur
Route::fallback
, anda boleh menentukan laluan yang dilaksanakan apabila tiada laluan lain sepadan dengan laluan masuk permintaan. Biasanya, permintaan yang tidak dikendalikan secara automatik diberikan dengan halaman "404" melalui pengendali pengecualian aplikasi. Walau bagaimanapun, kerana anda boleh menentukan laluanfallback
dalam failroutes/web.php
, semua middleware daripada middlewareweb
akan digunakan pada laluan tengah. Sudah tentu, anda boleh menambah perisian tengah tambahan pada laluan ini jika perlu: 🎜rrreee🎜{nota} Laluan sandaran hendaklah sentiasa menjadi laluan terakhir yang didaftarkan oleh aplikasi anda. 🎜
🎜🎜🎜🎜Kawalan Akses
🎜Laravel termasuk perisian tengah Digunakan untuk mengawal akses aplikasi ke laluan. Jika anda ingin menggunakannya, tetapkan perisian tengahthrottle
kepada laluan atau kumpulan laluan. Perisian tengahthrottle
menerima dua parameter yang menentukan bilangan maksimum permintaan yang boleh dibuat dalam beberapa minit tertentu. Sebagai contoh, mari tentukan kumpulan penghalaan yang disahkan dan pengguna mengakses tidak lebih daripada 60 kali seminit: 🎜rrreee Property modelUser
yang disahkan yang menentukan nilai maksimum untuk permintaan dinamik. Sebagai contoh, jika modelUser
anda mengandungi atributrate_limit
, anda boleh menghantar nama atribut kepada middlewarethrottle
supaya ia boleh digunakan untuk kirakan permintaan maksimum Nombor: 🎜rrreee🎜🎜🎜🎜Form method spoofing
🎜 Borang HTML tidak disokong kelakuanPUT
,PATCH
atauDELETE
. Jadi apabila anda ingin memanggil laluan yang mentakrifkan tingkah lakuPUT
,PATCH
atauDELETE
daripada borang HTML, anda perlu menambah Hidden_method
teg input. Gunakan nilai medan_method
sebagai kaedah permintaan HTTP: 🎜rrreee🎜 Anda juga boleh menggunakan arahan templat@method
untuk menjana input_method
: 🎜rrreee🎜 🎜🎜🎜🎜🎜Mengakses laluan semasa
Anda boleh mengakses maklumat tentang laluan yang mengendalikan permintaan masuk menggunakan kaedah
rrreeecurrent
、currentRouteName
和currentRouteAction
pada fasad Laluan:Jika anda ingin mengetahui semua kaedah yang boleh diakses, anda boleh menyemak dokumentasi API untuk fasad Laluan dan Kelas asas contoh Laluan.