美文网首页
6.27——基本路由

6.27——基本路由

作者: DonnieZero | 来源:发表于2017-06-27 11:08 被阅读0次

    6.27-7.4的任务:

    1.阅读Laravel中文文档,建立项目进行尝试

    2.加深对于sql的了解

    3.看代码,乐器博物馆和新闻

    记录-Laravel中文文档学习:

    ——Route的范式:Route::get($uri, $callback);     uri是路由的输入,callback是返回值,callback的位置是一个闭包,目前理解为一个函数???

    ——设定可选参数,需要设定默认值,否则闭包中可能缺少参数

    Route::get('user/{name?}', function ($name = null) {

    return $name;

    });

    ——正则约束,基本够用的格式:‘abc’ 写死的字符,‘[0-9][a-z][K-X]’ 一个范围内的字符,‘?’ 0或1个,‘+’ 1或多个, ‘{1,10}’ 控制字符串长度

    Route::get('member/{id}/{name}',function($id,$name) {

    return'hello '.$id.' '.$name;

    })->where(['id'=>'u[0-9]{1,5}','name'=>'[0-z]+']);

    ——全局约束有什么作用??

    ——群组路由&命名路由,该例中群组路由的名称为‘group’,其附属的路由名称为‘group::name’,所以调用route方法生成Level2的url时,参数名称为‘group;;Level2’,但是在访问url时,地址输入为http://localhost/Learning/public/Level2,可见群组的名称只是在代码范围内给路由的一个“代号”,而并不是真正路由的一部分

    Route::group(['as'=>'group::'],function(){

    Route::get('Level2',['as'=>'Level2',function(){

    returnroute('group::Level2');

    }]);

    });

    ——为命名路由生成URL

    如果命名路由定义了参数,可以将该参数作为第二个参数传递给route函数。给定的路由参数将会自动插入 URL 中:

    Route::get('make_file/{id}/profile', ['as' => 'profile', function ($id) {

    $url = route('profile', ['id' => 1]);

    return $url;

    }]);

    以上代码输入:http://localhost/Learning/public/make_url/15/profile

    返回结果为:http://localhost/Learning/public/make_url/1/profile

    可见该段代码将‘id’写死为1,无论路由中输入的{id}是什么,生成的都是id为1时的URL

    尝试将代码里route函数中的第二个参数注释掉,即为route('profile'),运行结果报错,于是推测route()函数第一个参数是需要生成URL的route的名称,函数会在确认该route之后去判断该route中是否存在变量(比如该例中的id),为了验证该猜想,决定构造一个含有两个参数的route,然后只给route()函数两个参数,如果会报相同的错,说明猜想成立

    //构造该路由用于探索route函数的工作机制

    Route::get('make_url_2/{id}/{name}/profile', ['as'=>'2vars',function($id) {

    $url= route('2vars',$id);

    return$url;

    }]);

    果然报了Missing required parameters的错误,可见猜想成立

    ——Laravel有没有使用手册(有,已经找到了,顺便看一下怎么做CHM,好好玩)

    ——意识到一个小问题,如果不同路由给相同的别名会怎么样,试一下。。。。搞事情

    试了一下,结果很奇怪,暂时没有判断出其中的机制

    ——路由组群

    中间件是什么???  似乎后文会有解释,暂时跳过

    命名空间,感觉就是为了防止重名而加的地址

    路由群组可以为其中的子路由添加中间件和命名空间,代码略

    路由群组对于子路由只有给路由名称提供统一前缀,以及给所有子路由提供相同性质这样的作用,而并不能影响其URL,

    ——子域名路由,比较有趣,在group路由之中,可以捕获参数,其中所有的子路由也都会有捕获这个参数的能力,以下为例子:。。。。。子域名没有设置好,很烦

    ——路由前缀

    //路由前缀

    Route::group(['prefix'=>'admin'],function() {

    Route::get('subfix',function() {

    return'hello';

    // 匹配 "/admin/users" URL});  });

    //路由前缀可以含有变量

    Route::group(['prefix'=>'{admin}'],function() {

    Route::get('subfix_2',function($admin) {

    return'hello '.$admin;

    // 匹配 "/admin/users" URL});  });

    //输入:http://localhost/Learning/public/kidding/subfix_2

    //返回:hello kidding

    ——防御CSRF攻击

    相关文章

      网友评论

          本文标题:6.27——基本路由

          本文链接:https://www.haomeiwen.com/subject/ocascxtx.html