首页  >  文章  >  php框架  >  一篇文章学会Laravel框架所有基础路由知识

一篇文章学会Laravel框架所有基础路由知识

Mini
Mini原创
2020-05-21 15:51:21110浏览

本节内容主要讲解Laravel框架的路由详解,主要讲解路由的定义,参数,规则,访问控制器等操作。

一、常用路由动作

语法

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

常用路由方式

Route::post('/', function () {    
    return view('welcome');
});
Route::get('/', function () {    
    return view('welcome');
});
Route::delete('/', function () {    
    return view('welcome');
});


或者直接请求控制器

Route::post('/',  'WelcomeController@index');
Route::get('/',  'WelcomeController@index');
Route::delete('/',  'WelcomeController@index');

任何请求方式匹配

Route::any(['get', 'post'], '/', function () {
    return view('welcome');
});
Route::any(['get', 'post'], '/', 'WelcomeController@index');

白名单数组匹配match组合

Route::match(['get', 'post'], '/', function () {
    return view('welcome');
});
Route::match(['get', 'post'],'/', 'WelcomeController@index');

重定向路由

Route::redirect('/here',  '/404',  404);

二、参数路由

Route::get('user/{id?}', function ($id = 1) {    
    return "用户ID: " . $id;
});


正则方式的参数路由

Route::get('page/{id}', function ($id) {    
    return '页面ID: ' . $id;
})->where('id', '[0-9]+');
Route::get('page/{name}', function ($name) {    
    return '页面名称: ' . $name;
})->where('name', '[A-Za-z]+');
Route::get('page/{id}/{slug}', function ($id, $slug) {    
    return $id . ':' . $slug;
})->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']);


三、路由别名(以user.profile进行访问)

Route::get('user/{id?}', function ($id = 1) {    
    return "用户ID: " . $id;
})->name('user.profile');

// 访问方式:

<a href="{{ route(&#39;user.profile&#39;, [&#39;id&#39; => 100]) }}">


四、路由分组

Route::group([], function () {     
    Route::get(&#39;hello&#39;, function () {         
        return &#39;Hello&#39;;     
    });     
    Route::get(&#39;world&#39;, function () {         
        return &#39;World&#39;;     
    });
});

五、路由分组、中间件(2中方式-一般使用第二种)

Route::middleware(&#39;auth:api&#39;)->group(function () {    
    Route::get(&#39;dashboard&#39;, function () {        
        return view(&#39;dashboard&#39;);    
    });    
    Route::get(&#39;account&#39;, function () {        
        return view(&#39;account&#39;);    
    });
});

或者

Route::group([&#39;middleware&#39; => &#39;auth:api&#39;], function () {     
    Route::get(&#39;dashboard&#39;, function () {         
        return view(&#39;dashboard&#39;);     
    });     
    Route::get(&#39;account&#39;, function () {         
        return view(&#39;account&#39;);     
    });
});

六、路由路径前缀

Route::prefix(&#39;api&#39;)->group(function () {    
    Route::get(&#39;/&#39;, function () {        
    // 处理 /api 路由    
    })->name(&#39;api.index&#39;);   
     
    Route::get(&#39;users&#39;, function () {        
    // 处理 /api/users 路由    
    })->name(&#39;api.users&#39;);
});

七、路由子域名

Route::domain(&#39;{account}.blog.test&#39;)->group(function (){    
    Route::get(&#39;/&#39;, function ($account) {        
        //TODO    
    });    

    Route::get(&#39;user/{id}&#39;, function ($account, $id) {        
        //TODO    
    });
});

八、路由命名空间

Route::namespace(&#39;Admin&#39;)->group(function() {     
    // App\Http\Controllers\Admin\AdminController     
    Route::get(&#39;/admin&#39;, &#39;AdminController@index&#39;);
});

路由命名空间、前缀、分组、参数、别名组合

// 路由命名+路径前缀

Route::name(&#39;user.&#39;)->prefix(&#39;user&#39;)->group(function () {    
    Route::get(&#39;{id?}&#39;, function ($id = 1) {        
        // 处理 /user/{id} 路由,路由命名为 user.show        
        return route(&#39;user.show&#39;);    
    })->name(&#39;show&#39;);  
      
    Route::get(&#39;posts&#39;, function () {        
        // 处理 /user/posts 路由,路由命名为 user.posts    
    })->name(&#39;posts&#39;);
});


九、访问当前路由

$route  = Route::current();
$name   = Route::currentRouteName();
$action = Route::currentRouteAction();

十、清除路由缓存

php artisan route:cache

十一、删除路由缓存

php artisan route:clear


总结:

通过以上的学习总结,我们已经学会了Laravel的路由定义、访问方式,而且路由非常的方便,对于新手来说,学习起来非常的方便,也非常容易学会。

以上是一篇文章学会Laravel框架所有基础路由知识的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn