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攻击
网友评论