laravel学习
来源:互联网 发布:未来软件家园 编辑:程序博客网 时间:2024/06/08 09:41
隐藏index.php
在nginx下的server里面
location / {
try_files
}
1.路由
Laravel中的路由全部定义在/app/Http/routes.php中
Route::get('/testPost', function () { $csrf_token=csrf_token(); $form=<<<FORM <form action='/hello' method="post"> <input type="hidden" name="_token" value="{$csrf_token}"> <input type="submit" value="Test"/> </form>FORM; return $form;});Route::post('/hello', function () { return "hello world";});
PHP
PHP
Route::match(['get','post'],'/hello',function(){
return "Hello Laravel!";
})
2.路由参数
Route::get('/hello/{name}',function($name){ return "hello {$name}!";})
2.1可选参数
Route::get('/hello/{name?}',function($name="Laravel"){ return "Hello {$name}!";})
2.3正则约束
Route::get('/hello/{$name?}',function($name="Laravel"{ return "Hello {$name}!";})->where('name','[A-Za-z]+'));//该条件约束意味着$name只能包含大小写字母
//如果我们在全局范围内对参数进行条件约束,可以在RouteServiceProvider的boot方法中定义
public function boot(Router $router){ $router->pattern('name','[A-Za-z]+'); parent::boot($router);}
服务提供者的boot方法在所有服务提供者的register方法执行完毕后开始执行,也就是说我们可以在boot方法对任意服务容中的对象进行依赖注入。
3.路由命名
3.1as关键字
我们使用as关键字来为路由命名:
Route::get('/hello/laravelacademy',['as'=>'academy',function(){ return 'Hello LaravelAcademy!';}]);//路由命名可以让我们在使用route函数生成指向该路由的URL或者生成跳转到该路由的重定向链接时更加方便:Route::get('/testNameRoute',function(){ return route('academy');})
那么我们在http://laravel.yqg.com/testNameRoute时输出:
http://laravel.yqg.com/hello/laravelacademy
3.2:redirect+别名
Route::get('/testNameRoute',function(){ return redirect()->route('academy');})
3.3带参数的路由
Route::get('/hello/laravelacademy/{id}',['as'=>'academy',function($id){ return 'Hello LaravelAcademy'.$id.'!';})
http://laravel.yqg.com/testNameRoute时会跳转到
http://laravel.yqg.com/hello/laravelacademy/1
3.4路由分组时路由命名方式
Route::group(['as'=>'admin::'],function(){ Route::get('dashboard',['as'=>'dashboard',function(){ }]);});
4.路由分组
路由分组就是一组拥有相同属性(中间件、命名空间、子域名、路由前缀等)的路由使用Route门面的group方法聚合起来;
4.1中间件
1.
php artisan make::middleware TestMiddleWare
这样会在/app/Http/Middleware目录下生成一个TestMiddleware.php
如限制18岁不能访问
public function handler($request,Closure $next ){ if($request->input('age')<18) return redirect()->route('refuse'); return $next($request);}
2.然后我们打开/app/Http/Kernel.php文件中,新增TestMiddleware到kernel的$routeMiddleware属性
protected $routeMiddleware=[ 'auth'=>\App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'test' => \App\Http\Middleware\TestMiddleware::class,]
3.route.php
Route::group(['middleware'=>'test'],function(){ Route::get('/write/laravelacademy',function(){ }); Route::get('/update/laravelacademy',function(){ });});Route::get('/age/refuse',['as'=>'refuse',function(){ return "未成年人禁止入内;"}]);
那么我们访问http:://laravel.yqg.com/write/laravelacademy?age=15或者http:://laravel.yqg.com/update/laravelacademy?age=15的时候就会跳转到http:://laravel.yqg.com/age/refuse
4.2命名空间
默认情况下,routes.php中的定义的控制器位于App\Http\Controllers命名空间下,所以如果指定命名空间,只需要指定App\Http\Controllers之后部分即可
Route::group(['namespace'=>'laravelAcademy'], function(){ //控制器在"App\Htpp\Controllers\LaravelAcademy”命名空间下 Route::group(['namespace'=>'DOCS'],function(){ //控制器在"App\Htpp\Controllers\LaravelAcademy\DOCS”命名空间下 }) })
4.3子域名
子域名通过设置domain关键字来设置
Route::group(['domain'=>'{service}.laravel.app'],function(){ Route::get('/write/laravelacademy',function($service){ return "Write FROM {$service}.laravel.app";}); Route::get('/update/laravelacademy',function($service){ return "Update FROM {$service}.laravel.app"; });});
访问http://write.laravel.app/write/laravelacademy则输出
write FROM write.laravel.app
访问http://write.laravel.app/update/laravelacademy则输出
write FROM update.laravel.app
4.3路由前缀
如果路由群组中的所有路由包统一前缀,则我们可以通过group方法中 设置prefix属性指定前缀:
Route::group(['prefix'=>'laravelacademy'],function(){ Route::get('write',function(){ return "Write LaravelAcademy"; }); Route::get('update',function(){ return "Update LaravelAcademy"; });});
我们就可以通过http://laravel.app:8000/laravelacademy/write或者http://laravel.app:8000/laravelacademy/update
路由前缀加参数
Route::group(['prefix'=>'laravelacademy/{version}'],function(){ Route::get('write',function($version){ return "Write LaravelAcademy {$version}"; }); Route::get('update',function($version){ return "Update LaravelAcademy {$version}"; });});
那么访问http:://laravel.app:8000/laravelacademy/5.1/write则输出: write LaravelAcademy 5.1
- Laravel学习
- laravel学习
- laravel学习
- laravel学习
- [Laravel学习笔记] 安装Laravel
- laravel学习(一)-laravel安装
- Laravel学习之Composer安装Laravel
- Laravel 框架的学习
- laravel学习笔记1
- Laravel 学习(一)
- Laravel学习笔记一
- Laravel 学习笔记
- laravel 学习笔记
- laravel学习-1
- laravel validate学习笔记
- Laravel学习笔记目录
- Laravel学习笔记一
- laravel学习笔记二
- 如何查看codeblock的头文件
- HTML基础[思维导图]
- [线段树 点更新 段查询]A
- hdoj1074 Doing Homework (状态压缩 DP)
- 互信息(Mutual Information)和χ 2特征选择方法去噪处理
- laravel学习
- 权限修饰符、状态修饰符、抽象修饰符使用规则
- 常用ADB命令使用和adb logcat 命令行用法 monkey压力测试
- Android 自定义弹窗
- 教你彻底解决Eclipse自动补全变量
- bzoj1417: Pku3156 Interconnect
- Java中一次对象的自我拯救探究
- c#动态编译,自己做了个c#脚本管理框架,可以作为其他应用的插件使用。增强程序的拓展性
- Codeforces Round #409 C