首先看到rotues资料夹里的web.php,会看到这些程序码
Route::get('/', function () { // 使用get方法请求
return view('welcome'); // 回传view给他
});
view的位置就放在resources\views\welcome.blade.php
接下来说说来说说基本路由
Laravel 的路由只接受一个 URI 和一个Closure(闭包)
Route::get('foo', function () {
return 'Hello World';
});
laravel 可以使用所有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
Route::match(['get', 'post'], '/', function () {
//
});
Route::any('foo', function () {
//
});
如果有将路由指向任何HTML表单POST,PUT或DELETE放在web.php
中,应当包括CSRF令牌字段。否则,请求将被拒绝。
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
有时需要捕捉路由中的URI字段,可以通过以下方式实现
Route::get('user/{id}', function ($id) {
return "User: $id";
});
如下图所示:
可以根据自己的想法来定义更多的路线参数
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
有时可能需要指定一个路由参数,但将该路由参数的存在设为可选。您可以通过?在参数名称後放置一个标记来实现。确保给路由对应的变量一个默认值:
Route::get('user/{name?}', function ($name = null) {
return $name;
});
Route::get('user/{name?}', function ($name = 'John') {
return $name;
});
您可以使用where路由实例上的方法来限制路由参数的格式。该where方法接受参数的名称和定义参数应如何约束的正则表达式:
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+'); // 他就会找出$name这个参数,符合规则的字段
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]+']);
如果您希望路由参数始终受给定正则表达式的约束,则可以使用该pattern方法。您应该在boot
您的方法中定义这些模式RouteServiceProvider
:
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
Route::pattern('id', '[0-9]+');
parent::boot();
}
一旦定义了模式,它就会自动应用於使用该参数名称的所有路由:
Route::get('user/{id}', function ($id) {
// Only executed if {id} is numeric...
});
命名路由允许为特定路由方便地生成 URL 或重定向。您可以通过将name方法链接到路由定义来为路由指定名称:
Route::get('user/profile', function () {
//
})->name('profile');
您还可以为控制器操作指定路由名称:
Route::get('user/profile', 'UserController@showProfile')->name('profile');
生成命名路由的 URL
为给定路由指定名称後,您可以在通过全局route函数生成 URL 或重定向时使用该路由的名称:
// Generating URLs...
$url = route('profile');
// Generating Redirects...
return redirect()->route('profile');
如果命名路由定义了参数,您可以将参数作为第二个参数传递给route函数。给定的参数将自动插入到 URL 的正确位置:
Route::get('user/{id}/profile', function ($id) {
//
})->name('profile');
$url = route('profile', ['id' => 1]);
<<: CSS微动画 - Loading来了!终於要出款文字版本的了!
社群软件的用户间交谈讯息是如何做到资讯安全保护? 关於端对端加密 隐私与安全对我们来说极度重要,因此...
Biometric Biometric让用户不必每次打开APP时都记住帐户用户名和密码,只需使用生物...
今天早上泡了杯 wushwush,打开我的 Leetcode, 啊又是一个觉得智力不足的 momen...
继前天吧,我把新创apple id加入developer,然後没付费的状态,这个时候好像是叫做per...
Quartz.Net 提供直接整合.Net Core DI的扩展,安装底下的套件即可 Install...