什么是路由
将用户的请求按照事先规划的方案提交给指定的控制器和方法来进行处理。
Laravel框架中用户需要访问的全部路由都事先设置好,用户只能访问声明的一些路由,即没有声明的路由是不能被访问的,进而可以提高网站的安全和网站URL访问的友好度。
路由文件的位置:项目目录/routes/web.php文件
Route::请求方式(‘url’,匿名函数);
Route::请求方式(‘url’,’控制器名称\@操作方法’);
get请求
post请求
注:laravel默认是给我们的post提交进行了csrf验证,所以测试的时候,可以进行关闭
关闭方法
得到的信息
postman
GET(SELECT):从服务器取出资源(一项或多项)。
POST(INSERT):在服务器新建一个资源。
PUT/PATCH(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
DELETE(DELETE):从服务器删除资源。
在laravel中我们可以定义这样请求的路由请求方式
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::delete($uri, $callback);
有的时候你可能需要注册一个可响应多个 HTTP 方法的路由,这时你可以使用 match
方法,也可以使用 any 方法注册一个实现响应所有 HTTP 的请求的路由:
# 支持 get和post请求
Route::match([‘get’, ‘post’], ‘/’, $callback);
# 支持所有类型的请求 (不建议用它)
Route::any(‘foo’,$callback);
路由参数主要针对的是GET请求的情况
语法格式如下:
# 必填
Route::get(‘URL/{参数名称}‘,’闭包函数或控制器响应方法标识’);
# 可选
Route::get(‘URL/{参数名称?}‘,’闭包函数或控制器响应方法标识’);
# 参数限制
Route::get(‘URL/{参数名称}‘,’闭包函数或控制器响应方法标识’)->where(‘参数名称’,’正则表达式’);
Route::get(‘URL/{参数名称}‘,’闭包函数或控制器响应方法标识’)->where([‘参数名称’=>’正则表达式’]);
where(‘参数名称’,’正则表达式’)用来对输入的参数进行限制,只有符合正则表达式要求的参数才可以传递
路由别名相当于在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由的信息。
用法
Route::get(‘/user/{id}’,function($id){
return “当前用户id是:” . $id;
}) -> name(‘名字’);
# 生成了对应的URL地址
$url = route(‘profile’);
比如后台有如下路由
/admin/login
/admin/logout
/admin/index
/admin/user/add
/admin/user/del
他们的共同点是,都有/admin/前缀,为了管理方便,可以把他们放到一个路由分组中。
使用prefix属性指定路由前缀
Route::group([‘prefix’ => ‘admin’], function () {
Route::get(‘users’, function () {
// 匹配 “/admin/users” URL
});
});
php artisan route:list
注意:使用大驼峰命名,同时注意命名空间和基类控制器的引入
创建方式:cmd方式 进入到artisan文件所在的目录,
php artisan make:controller TestController
如何使用路由规则调用控制器下的方法。
路由设置格式基本相同,只是将闭包函数换成‘控制器类名\@方法名’
定义格式如下:
Route::请求方法(URL,’控制器类名\@方法名’)
web.php
在实际的开发中,我们的所写的控制器会有很多,如果都存放在一个目录中,会不便于日后维护工作,所以我们想着是否可以分目录来存放我们编写的控制器呢?答案是肯定的,可以。
原因就是在初始化项目之后,其Controllers目录下就存在Auth目录,而这个目录就是用于分目录管理的。
修改框架结构,让控制器分目录管理,可以手动创建目录移动所对应的类文件,也可以通过命令来生成解决。
用法:
php artisan make:controller 目录名称/控制器文件名
php artisan make:controller Home/UserController
#分完目录的控制器如何来定义路由呢
// 分目录
Route::get(‘home/user/index’,’Home\UserController\@index’);
web.php路由文件的定义
控制器
视图的用途是用来存放应用程序中 HTML
内容,并且能够将你的控制器层(或应用逻辑层)与展现层分开。我们在控制器中使用助手函数【view()】来加载模板。
位置:resources/views
(1)文件名小写
(2)文件名的后缀是 .blade.php
因为laravel里面有一套模板引擎就是使用blade,可以直接使用标签语法{{ $变量名
}}, 当然也可以使用原生的php语法显示数据。
语法:
view(模板文件名称,关联数组)
view(模板文件名称,compact(‘变量名1’,’变量名2’))
view(模板文件名称)->with(名称,值)->with(名称,值)
view(模板文件名称)->with(关联数组)
模板中输出变量:
①、变量
{{$变量名}}
例
{{$name}}等价于 或 = $name; ?>
②、三元运算
{{ $name or 'Default' }} 等价于
③、未转义输出
一般用于富文本编辑器添加的内容显示所用
如果变量信息里边如果有 ”<” ”>” 等html标记信息,那么该变量在输出的时候也会看到该标记,即html标记被转化为符号实体了,而没有被浏览器解析掉,如果希望看到被浏览器解析后的内容,就需要设置两个感叹号。
{!!$变量!!}
④、原始形态输出
由于很多 JavaScript 框架都使用花括号来表明所提供的表达式,所以你可以使用 @ 符号来告知 Blade 渲染引擎你需要保留这个表达式原始形态。
Laravel
Hello, @{{ $变量名 }}
⑤、注释
{{--
这里的内容不会显示
--}}
phpstorm blade模板的注释快捷键 【ctrl+/】
使用函数
可以在blade模板中直接使用php函数
{{php函数名()}}
if语句
@if (count($records) === 1)
我有一条记录!
@elseif (count($records) > 1)
我有多条记录!
@else
我没有任何记录!
@endif
循环
@for ($i = 0; $i < 10; $i++)
目前的值为 {{ $i }}
@endfor
@foreach ($users as $user)
此用户为 {{ $user->id }}
# 如果传过来的就是数据那么我们就用
{{ $user['id'] }}
@endforeach
@forelse ($users as $user)
{{ $user->name }}
# 如果传过来的就是数据那么我们就用
{{ $user['id'] }}
@empty
没有用户
@endforelse
注:foreach有循环变量,$loop,$loop->index 当前循环所迭代的索引,起始为 0。
forelse 它会判断是否有数据,如果有则foreach循环出数据,否则执行@empty中的内容
视图文件分文件夹管理
视图名称直接从resources/views后边开始设置即可
一个项目系统里边有许多视图文件,因此要在resources/views目录下创建二级、三级等目录,进行管理不同的视图文件,需要手动去创建对应的目录。
引入二级、三级视图文件:
return view(目录1.目录2.名称);
return view(目录1/目录2/名称);
比如视图文件;
resources/views/add.blade.php
则使用函数return view(add);
resources/views/admin/index.blade.php
则使用函数return view(admin.index);
resources/views/admin/goods/index.blade.php
则使用函数return view(admin.goods.index);