• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Laravel 514 + Bootstrap 334 笔记二:Laravel 路由

php 搞代码 4年前 (2022-01-23) 68次浏览 已收录 0个评论

1 路由机制

MVC中路由是一个非常重要的功能,其作用是:
A.根据用户访问(URL)匹配传入的请求及请求附带的参数;
B.调用请求映射Controller的Action方法,并把参数传入;
C.返回Action方法处理结果;
下图以简单的形式表示一个用户请求:


2 Laravel中的路由

在Laravel 5.1.4中,路由配置文件*本文来源gaodai#ma#com搞@代~码^网+搞代gaodaima码是 app/Http/routes.php。

2.1 直接返回字符串的路由

在原有的代码后面追加如下代码段:

Route::get('/hw', function () {    return 'Hello World';});

打开浏览器访问:http://localhost:801/hw,如下图示:

2.2 返回视图的路由

在上面的代码中再追加如下代码段:

Route::get('/home', function () {    return view('home');});

在目录resources/views下创建视图文件:home.php,内容如下:

<body>

home

打开浏览器访问:http://localhost:801/home

如果上例的代码中需要向视图页传递参数怎么办呢?修改我们的路由代码:

Route::get('/home', function () {    return view('home', ['name' => '张三']);});

修改视图代码:

<body>[<?php echo $name; ?>],您好!

再看看访问的效果:

如果视图太多,一般是按模块甚至按功能存放的,在resources/views目录下依次新建目录:public/demo,然后把home.php移到该目录中。

修改上例中的路由代码为:

Route::get('/home', function () {    return view('public.demo.home', ['name' => '张三']);});

再次访问还是能正常打开页面的。

2.3 路由参数

在前文已经说过,路由可以匹配出用户的请求参数,那如何匹配呢?在上例的路由文件中追加代码段:

Route::get('user/{name}', function($name) {    return '用户姓名:'.$name;});

打开浏览器访问:http://localhost:801/user/jack

那如果是两个参数怎么办呢?修改路由代码:

Route::get('user/{name}/{age}', function($name,$age) {    return '用户姓名:'.$name.',年龄:'.$age;});

打开浏览器访问:http://localhost:801/user/jack/23

假如age参数不是必须的的呢?再次修改路由代码:

Route::get('user/{name}/{age?}', function($name,$age=null) {    return '用户姓名:'.$name.',年龄:'.$age;});

访问地址:http://localhost:801/user/jack

2.4 路由参数的约束

在正常情况下,用户访问的一些参数是有一定的规则,比如读取用户信息时的用户ID可能是数字,修改新闻信息时的新闻ID可能是GUID等等。

修改routes.php文件,追加以下代码:

Route::get('new/{id}', function($id){    return '新闻ID:'.$id;})->where('id', '[0-9]+');

打开浏览器访问 http://localhost:801/new/3 是这样的:

可访问 http://localhost:801/new/abc 时则提供页面不存在:

相应的,当同时对多个参数限制时则需要使用数组,修改上例的路由代码:

Route::get('new/{id}/{title}', function($id,$title){    return '新闻ID:'.$id.',新闻标题:'.$title;})->where(['id' => '[0-9]+', 'title' => '[a-z]+']);

访问效果这里就不演示了。
另外,我们可以配置全局的限制条件,打开文件:app/Providers/RouteServiceProviders.php,修改boot方法如下:

    public function boot(Router $router)    {        //        $router->pattern('id', '[0-9]+');        parent::boot($router);    }

修改上例中的路由代码为:

Route::get('new/{id}', function($id){    return '新闻ID:'.$id;});

访问效果和上例是一样的,这里不在演示。

2.5 获取路由参数

在routes.php中可以获取路由参数,以此来做其他的操作,修改上例的路由代码:

Route::get('new/{id}', function(Request $request, $id){    if ($request->route('id') == '2')    {        return '新闻ID是2';    }else{        return '新闻ID不是2,值是:'.$id;    }});

在routes.php中<?php后插入新的一行:

use Illuminate\Http\Request;

打开浏览器,分别访问 http://localhost:801/new/2http://localhost:801/new/3 即可看到不同的页面效果。

路由还有很多复杂的功能,有待研究。

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了Laravel 514 + Bootstrap 334 笔记二:Laravel 路由,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Laravel 514 + Bootstrap 334 笔记二:Laravel 路由

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址