精华内容
下载资源
问答
  • laravel的路由
    万次阅读
    2019-07-27 10:40:29

    路由

    在laravel中,定义路由的地方在routes/web.php文件中。在使用laravel前必须先定义路由,然后才能在浏览器中访问。routes文件夹中还有一个api.php,用于定义api路径。

    最简单的路由:

    Route::get('/',function(){
       return 'hello,world!' ;
    });
    

    此时在浏览器中,输入localhost,就可以看到输出的字符串。

    使用MVC模式时,我们一般先定义路由,然后在路由中访问控制器中的方法,控制器中的方法返回响应的视图,此时我们可以定义路由,如下:

    Route::get('/','IndexController@index');
    

    其中IndexController是控制器类,index是控制器类中的方法,index方法中可以定义返回的视图。

    路由动作

    上面Route::get语法只能处理get请求,laravel定义了其他请求路由的方法:

    Route::post('/',function(){});
    Route::put('/',function(){});
    Route::delete('/',function(){});
    

    还可以使用通用方法(不推荐使用):

    Route::any('/',function(){});
    

    我们还可以通过Route::match定义几种特定请求方法:

    Route::match(['get','post'],'/',function(){});
    

    路由参数

    在laravel中还可以定义路由参数:

    Route::get('post/{id}',function($id){
        return "文章ID: ".$id;
    });
    

    此时,通过localhost/post/100,就可以访问id=100的文章。还可以定义可选路由参数:

    Route::get('post/{id?}',function($id=1){
        return "文章ID: ".$id;
    });
    

    如果访问localhost/post/就会返回id=1的文章

    还可以为路由参数指定正则表达式,约束路由参数范围:

    //id只能是数字
    Route::get('page/{id}', function ($id) {
        return '页面ID: ' . $id;
    })->where('id', '[0-9]+');
    
    //name只能是大小写字母
    Route::get('page/{name}', function ($name) {
        return '页面名称: ' . $name;
    })->where('name', '[A-Za-z]+');
    
    //定义多个路由参数约束规则
    Route::get('page/{id}/{slug}', function ($id, $slug) {
        return $id . ':' . $slug;
    })->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']);
    

    路由命名

    为路由起名,主要是为了在控制器或者视图类中引用。路由命名示例如下:

    Route::get('user/{id?}', function ($id = 1) {
        return "用户ID: " . $id;
    })->name('user.profile');
    

    此时在视图中,就可以使用命名路由:

    <a href="{{ route('user.profile', ['id' => 100]) }}">
    // 输出:http://blog.test/user/100
    

    路由分组

    在网络应用程序中,我们可以给路由分组,比如前后台分组,还可以根据其他特征,比如路由前缀、子域名、控制器命名空间、是否使用相同的中间件等。
    定义路由分组,主要是为了让代码可读性更好,便于维护。

    根据命名空间分组

    //前台路由组
    Route::group(['namespace' => 'Home'], function(){
        // 控制器在 "App\Http\Controllers\Home" 命名空间下
        Route::get('/', 'IndexController@index');
    });
    
    //后台路由组
    Route::group(['namespace' => 'Admin', 'prefix' => 'admin'], function(){
        // 控制器在 "App\Http\Controllers\Admin" 命名空间下
        Route::get('/', 'AdminController@index');
    });
    
    // 或者用另外一种写法:
    Route::namespace('Admin')->prefix('admin')->group(function() {
         // App\Http\Controllers\Admin\AdminController
         Route::get('/', 'AdminController@index');
    });
    

    此时访问 domain(你的域名)即可访问前台,domain/admin 即可访问admin后台

    中间件

    中间件是对请求的一种过滤或重定向功能,比如认证中间件,只有通过认证才能通过某些路由访问相应的功能。不同的路由可以通过相同的中间件进行分组:

    Route::middleware('auth')->group(function () {
        Route::get('dashboard', function () {
            return view('dashboard');
        });
        Route::get('account', function () {
            return view('account');
        });
    });
    

    上面使用dashboard,account两个路由时,必须通过认证。

    路由路径前缀

    某些路由可以定义相同的前缀便于区分功能,可以使用Route::prefix对路由进行分组:

    Route::prefix('api')->group(function () {
        Route::get('/', function () {
            // 处理 /api 路由
        })->name('api.index');
        Route::get('users', function () {
            // 处理 /api/users 路由
        })->name('api.users');
    });
    

    子域名路由

    在laravel中,可以为不同的应用子系统设置不同的子域名,这时可以通过设置子域名路由访问不同的子系统:

    Route::domain('test.blog.com')->group(function () {
        Route::get('/', function () {
            // 处理 http://test.blog.com 路由
        });
    });
    

    还可以通过参数方式设置子域名,适用于网站拥有多租户的场景,比如建站系统,多家公司通过定义二级域名访问自己的网站。

    Route::domain('{account}.yoursite.com')->group(function () {
        Route::get('/', function ($account) {
            //
        });
        Route::get('user/{id}', function ($account, $id) {
            //
        });
    });
    

    注意:这种情况下,$account永远是所有分组路由的第一个路由参数。

    路由命名前缀

    除了通过上述共同特征对路由进行分组外,对于某一类资源路由,比如用户,往往拥有相同的路由命名前缀,如 user.,我们还可以基于这一特征对路由进行分组,使用 Route::name 方法即可实现:

    // 路由命名+路径前缀
    Route::name('user.')->prefix('user')->group(function () {
        Route::get('{id?}', function ($id = 1) {
            // 处理 /user/{id} 路由,路由命名为 user.show
            return route('user.show');
        })->name('show');
        Route::get('posts', function () {
            // 处理 /user/posts 路由,路由命名为 user.posts
        })->name('posts');
    });
    
    更多相关内容
  • 最近在学习laravel的时候发现了一个有趣的地方,下面和大家分享下,这篇文章主要给大家介绍了关于Laravel路由中不固定数量的参数是如何实现的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,...
  • 主要介绍了Laravel 路由研究之domain解决多域名问题的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Laravel路由

    2021-07-29 13:52:30
    一、Laravel入门使用(路由) 什么是路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理。 1、路由配置文件位置 路由文件在 routes/web.php 2、routes\web.php配置文件中配置...

    一、Laravel入门使用(路由)

    什么是路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理。

    1、路由配置文件位置

    路由文件在 routes/web.php

    2、routes\web.php配置文件中配置路由(重点)

    (1)默认跟路由 为什么当我们在浏览器中访问虚拟域名http://域名时,如何显示Laravel5? 原因是在路由文件web.php中,其已经定义好了一个路由,这个路由称之为“跟路由”,一般用于访问网站的首页。 在这里插入图片描述 (2)路由定义格式: Route::请求方式(请求的URL。匿名函数或控制器响应的方法) 比如请求域名下根目录 Route::get('/', function(){return 'hello world'}) 函数的返回值,就是请求的响应: 在这里插入图片描述 (3)请求方式有哪些? 我们可以注册路由来响应任何HTTP 请求:

    Route::get($uri, $callback) Route::post($uri, $callback) Route::put($uri, $callback) Route::patch($uri, $callback) Route::delete($uri, $callback) Route::options($uri, $callback)

    如果要解决<form action="" method="post">这样的问题,则需要下面的两个方法解决: 有时候还需要注册路由响应多个HTTP请求,则可以通过match方法来实现。或者,可以使用any方法注册一个路由来响应所有HTTP请求:

    Route::match(['get', 'post'], '/', function () {
    	//	
    })
    Route::any('foo', function () {
    	//	
    })
    

    常见的四个方法: get方法:表示匹配请求类型为get的请求; post方法:表示匹配请求类型为post的请求; match方法:表示匹配用户指定的几个请求类型(通过第一个参数去指定)的请求,语法:Route::match(['get', 'post', '...'], $uri, $callback); any方法:表示匹配路由所支持的全部请求类型;

    3、路由参数

    路由参数其实就是给路由传递参数。 参数分为必选参数和可选参数。 必选参数:一旦在路由中定义了,则必须传递,不传递就会报错。 路由参数的传递通过路由地址中的{参数名}的形式来进行传递,该形式是必须参数的形式,可以选的则使用{参数名?}。 例:

    Route::get('/home1/{id}', function($id) {
    	return '输入的id是'.$id;
    });
    Route::get('/home2/{id?}', function($id = 0) {
    	return '输入的id是'.$id;
    });
    

    效果: 在这里插入图片描述

    在这里插入图片描述


    传统参数传递方式:

    Route::get('/home3', function() {
        return '接收到的id是'.$_GET['id'];
    });
    

    效果:

    在这里插入图片描述


    4、路由别名(alias)

    路由别名相当于在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由的信息。/asdhakjd/asdjlaksdj/adsad -> url1 后期在视图中会频繁使用到这样的代码 <a href='{{route('url1')}}'>xxx</a> 语法:

    Route::请求类型(路由地址,响应方法) -> name(别名);

    例:

    Route::get('/', function () {
        return view('welcome'); // return view() 语法表示展示视图,welcome是视图文件/路径
    }) -> name('welcome');
    

    调用该路由则可以写成:route('welcome')


    查看系统已经有的的路由命令: php artisan routr:list ​​​​​​​

    5、路由群组

    有后台路径如下:

    /admin/login /admin/logout /admin/index /admin/user/add /admin/user/del

    他们的共同点是,都有/admin/前缀,为了管理方便,可以把他们放到一个路由分组中,这个分组称之为路由群组。 使用prefix属性指定路由前缀,也就是其路由中都就具备的相同部分。 语法:Route::group(公共属性数组,回调数组);回调函数中放的剔除公共属性之后的路由。 例:

    Route::group(['prefix' => 'admin'], function () {
        Route::get('login', function () {
            // 匹配 "/admin/login" URL
        });
        Route::get('logout', function () {
            // 匹配 "/admin/logout" URL
        });
        Route::get('user/add', function () {
            // 匹配 "/admin/user/add" URL
        });
    });

    在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

    展开全文
  • 如果我们可以从JavaScript访问Laravel路由,那会令人惊讶吗? 这个包允许我们将路由移植到JavaScript,并为我们提供了许多非常熟悉的帮助器函数。安装安装通常的方式。composer.json {" require " : {" lord/...
  • laravel路由参数_了解Laravel路由参数

    千次阅读 2020-07-19 03:13:02
    laravel路由参数 Today we'll be looking at more of Laravel's routing features. This time we'll be dealing with how Laravel handles route parameters. We've gone over Laravel routing before, but this ...

    laravel路由参数

    Today we'll be looking at more of Laravel's routing features. This time we'll be dealing with how Laravel handles route parameters. We've gone over Laravel routing before, but this time we'll be looking at more advanced scenarios.

    今天,我们将研究Laravel的更多路由功能。 这次我们将讨论Laravel如何处理路线参数 。 之前我们已经讨论过Laravel路由 ,但是这次我们将研究更高级的场景。

    路线参数 (Route Parameters)

    Laravel let's us use route parameters in our routes. This helps when you want to create routes with things like a subcategory or a specific identifier (name, id, or any other parameter). Let's look at the different ways to use route parameters.

    Laravel让我们在路线中使用路线参数。 当您想要创建带有子类别或特定标识符 (名称,ID或任何其他参数)之类的路由时,这会有所帮助。 让我们看看使用路由参数的不同方法。

    获取基本路线参数 (Getting a Basic Route Parameter)

    In this example, we will have a route for users and we'll pull the identifying parameter. We'll do it two different ways with name and with an id

    在此示例中,我们将为用户提供一条路线,并拉出识别参数。 我们将使用nameid两种不同的方式

    // get the cuteness level of a puppy
        Route::get('puppies/{cutelevel}', function($cutelevel) 
        {
            return 'This puppy is an absolute ' . $cutelevel . ' out of ' . $cutelevel;
        });
    
        // OR
    
        // get the parameter of name
        Route::get('users/{name}', function($name) 
        {
            return 'User Name is ' . $name;
        });

    Testing Cuteness Level: Now in our browser, if we access http://example.com/puppies/5, our browser would show This puppy is an absolute 5 out of 5.

    测试可爱度 :现在,在浏览器中,如果我们访问http://example.com/puppies/5 ,则浏览器将显示“ 这只小狗绝对是5之5”

    Testing Name: Now in our browser, if we access http://example.com/users/chris, our browser would show User Name is Chris.

    测试名称 :现在,在我们的浏览器中,如果我们访问http://example.com/users/chris ,则我们的浏览器将显示User Name是Chris

    使用可选的路由参数 (Using Optional Route Parameters)

    For this example, let's say we have a gallery of photos. We also have categories of photos. The category will be optional, otherwise, we'll just show all the photos.

    对于此示例,假设我们有一个图库。 我们也有照片类别。 类别是可选的,否则,我们将仅显示所有照片。

    // optional category
        Route::get('gallery/{category?}', function($category) 
        {
            // if category is set, show the category
            // if not, then show all
            if ($category)
                return 'This is the ' . $category . ' section.';
            else 
                return 'These are all the photos.';
    
        });

    Testing Optional Category: If we visit http://example.com/gallery/puppies, our browser would return This is the puppies section.

    测试可选类别 :如果我们访问http://example.com/gallery/puppies ,则浏览器将返回“ 这是小狗”部分。

    Testing No Optional Category: If we visit http://example.com/gallery, our browser will return These are all the photos.

    测试否可选类别 :如果我们访问http://example.com/gallery ,则我们的浏览器将返回这些都是照片。

    路由参数默认值 (Route Parameter Defaults)

    Let's say you always want a user to have a category selected. So if they don't have a category selected, they will automatically default to lets say the sunsets category.

    假设您一直希望用户选择一个类别。 因此,如果未选择类别,则它们将自动默认为日落类别。

    // optional category with a default
        Route::get('gallery/{category?}', function($category = 'sunsets')
        {
            return 'This is the ' . $category . ' category.';
        });

    Testing No Category: If we visit http://example.com/gallery, then our browser will return This is the sunsets category.

    测试无类别 :如果我们访问http://example.com/gallery ,则我们的浏览器将返回这是日落类别。

    Testing A Category: If we visit http://example.com/gallery/puppies, then our browser will return This is the puppies category.

    测试类别 :如果我们访问http://example.com/gallery/puppies ,则我们的浏览器将返回“ 这是小狗类别”。

    提取真实数据 (Pulling Real Data)

    So we've gone through the basics of route parameters. Let's talk about using these for a real world scenario. We will use the galleries example.

    因此,我们已经研究了路由参数的基础。 让我们谈谈在现实世界中使用它们的情况。 我们将使用画廊示例

    In the real world, you wouldn't want to give your visitor a sentence just telling them that they are seeing the puppies category. Your user will want to see puppies!.

    在现实世界中,您不希望给访客一个句子,而只是告诉他们他们看到的是小狗类别。 您的用户将要看到小狗!

    Let's say you already set up your Laravel application, migrations, and database. We can use Eloquent to pull data based on our route parameters.

    假设您已经设置了Laravel应用程序,迁移和数据库。 我们可以使用Eloquent根据路线参数提取数据。

    Once you also have your Eloquent model, you can call the information you need from the route (of course when your application gets larger, you'll want to move this logic into a controller).

    一旦有了Eloquent模型,就可以从路由中调用所需的信息(当然,当您的应用程序变大时,您需要将此逻辑移至控制器中)。

    // get the category of gallery for viewing
        Route::get('gallery/{category?}', function($category) {
    
            // get the gallery stuff for the category
            $gallery = Gallery::where('category', '=', $category);
    
            // return a view and send the gallery data to the view
            return View::make('gallery')
                ->with('gallery', $gallery);
        });

    结论 (Conclusion)

    As you can see, it is very easy to use route parameters and the Eloquent ORM to pull real data and send it to your view.

    如您所见,使用路由参数和Eloquent ORM提取真实数据并将其发送到视图非常容易。

    Let us know if there are any specific application use cases you'd like to see and we'll try to help out. You can expand on this with filters for authentication, route groups to prefix all routes, and much more.

    让我们知道您是否想查看任何特定的应用程序用例,我们将尽力提供帮助。 您可以使用用于身份验证的过滤器,为所有路由添加前缀的路由组等扩展功能。

    I'd advise you to check out the official Laravel route parameter docs to do more things like route constraints using regular expressions and more.

    我建议您查看官方的Laravel 路线参数文档,以使用正则表达式执行更多操作,例如路线约束等。

    翻译自: https://scotch.io/tutorials/understanding-laravel-route-parameters

    laravel路由参数

    展开全文
  • laravel路由参数

    2022-04-05 08:22:18
    laravel路由参数传参形式 Route::get('/article/{id}','Admin\LoginController@article'); 控制器方法 public function article($id) { return view('Admin.login.article'); } 可选参数传参形式 Route::get('/...

    1.0、laravel路由参数传参形式

    Route::get('/article/{id}','Admin\LoginController@article');
    

    1.1、控制器方法

    public function article($id)
        {
            return view('Admin.login.article');
        }
    

    1.2、可选参数传参形式

    Route::get('/article/{id?}','Admin\LoginController@article');
    

    1.3、在路由设置了可选参数需要在方法里面给可选参数一个默认值

    public function index($id='')
        {
            
            return view('Admin.login.index');
        }
    

    2.0、依赖注入和路由参数

    public function index(Request $request,$id='666')
        {
            $name = $request->input('name');
            dump($id) . PHP_EOL;
            dump($name) . PHP_EOL;die;
            return view('Admin.login.index');
        }
    

    在这里插入图片描述

    展开全文
  • laravel 路由404

    2022-04-18 13:14:35
    学习laravel的时候 再web.php写 路由的时候 一直404 Route::get('art', function(){ return 'hello laravel 7'; }); 解决方法: 1.在apache conf开启rewrite模块,把下面这句话前面的#去掉。 ...
  • Laravel路由设置

    2021-04-04 16:52:16
    Laravel路由设置 创建路由 路由的作用是在用户访问指定页面时将页面URL匹配到被执行的控制器或匿名函数。默认情况下,所有的Laravel路由都定义在app/Http/routes.php。 <?php use App\Task; use Illuminate\...
  • Laravel路由详解

    千次阅读 2021-07-01 15:38:29
    1、路由配置文件 路由文件的位置:项目目录/routes/web.php文件 2、4种基础路由的定义(重点) Route::请求方式('uri',匿名函数); #从服务器取出资源(一项或多项) Route::get($uri, $callback); #在服务器新建...
  • laravel路由设置

    2022-03-09 14:42:50
    laravel
  • Laravel 路由前缀

    2021-12-19 14:22:40
    Route::prefix('admin')->group(function () { Route::get('/user/{id}', function ($id) { return $id; }); }); Route::group(['prefix' => 'admin'], function () { Route::get('/user/{id}', function...
  • PHP - Laravel 路由参数

    2021-03-03 14:25:59
    上篇文章 PHP - Laravel 路由使用(详细) 。 路由参数模板 // 必填参数,如果不填报错 404 not found Route::get('/req/{参数名称}', function ($参数名称) { return 'Get请求'; }); // 可选参数 Route::get('/...
  • 路由格式 Route::get('/', function () { return view('welcome'); }); Route::get('/home/hello', 'HomeController@hello'); Route::post('/home/hello', 'HomeController@hello'); Route::delete('/home/hello', ...
  • 上篇文章 PHP - Laravel 路由使用(详细) 。 一、路由分组简介 普通路由,下面路由中 admin 完全一致,可以进行分组,便于管理。 // 登录 Route::get('admin/login', function () { return 'login'; }); // 退出 ...
  • PHP - Laravel 路由别名

    2021-03-03 14:47:58
    上篇文章 PHP - Laravel 路由使用(详细) 。 路由别名模板 # 路由别名 Route::get('/req', function () { return 'Get请求'; }) -> name('路由别名'); # 通过路由别名获得该路由的 URL 地址 $url = route('...
  • laravel 路由多种写法

    2021-12-20 09:44:32
    laravel 路由的多种不同写法
  • 深入浅出 Laravel 路由执行原理

    千次阅读 2018-07-13 12:15:10
    本文首发于「深入浅出 Laravel 路由执行原理」,转载请注明出处。这篇文章我们将学习 Laravel 项目中一个很重要的主题 --「路由」。可以说几乎所有的框架都会涉及到「路由」的处理,简单一点讲就将用户请求的 url ...
  • laravel路由冲突解决

    2020-08-27 11:50:53
    Route::get('article/{article}', '...教程中多半做法是调整路由的先后顺序,路由越细放在越前面。 实际上这种做法并不好,万一你做一个大商城,到时候越做越大,后期填坑就麻烦 正确做法:增加 where 条件限制 R
  • 在 PHP 代码中进行性能优化并非总是我们优先考虑的问题. 但是我们对后端代码的性能优化--特别是在一些很复杂...你可能没有注意到, 在 Laravel 4 以及更老版本中, 路由逻辑是性能上的一个瓶颈--特别是对于有很多路由...
  • Laravel路由规则

    2020-07-24 14:26:57
    Laravel项目的目录结构如上所示,在routes目录下新增路由文件,参考示例的访问方式总是404,经过不断的探索发现要想新增路由必须在 画圈的部分新增方法,加载新的路由文件才可以生效。 这样做的好处是可以按照业务...
  • 本文实例讲述了Laravel路由设定和子路由设定方法。分享给大家供大家参考,具体如下: 普通路由设定 1、路由(routes.php)代码: Route::get('min','MinController@index'); min:为路由名称,即url中输入的,如...
  • 教程来自bilibili 【李炎恢】【Laravel / 核心篇 / PHP框架 / 阶段一】【十天精品课堂系列】【已完结 / 47P】_哔哩哔哩_bilibili
  • laravel路由无效

    千次阅读 2019-08-13 17:39:04
    发生了只有根目录能访问,路由访问不了,记录一下解决过程中做了的事,apache开启rewrite模块、apache配置文件AllowOverride None换成AllowOverride All
  • laravel路由自动加载

    2020-04-08 14:16:49
    laravel路由自动加载 laravel 自带的路由文件有四个 api.php 文件存放 api 路由,会自动加载api前缀和一些中间件。 channels.php 文件用于注册应用支持的所有事件广播频道。 console.php 文件用于定义所有基于闭包...
  • 路由接口重定向,相当于通过 路由2 访问 路由1。 // 路由1 Route::get('req', function () { return 'Get 请求'; })->name('index.req'); // 路由2 Route::get('login', function () { // 方式一: // return...
  • Laravel路由的几种定义规则

    千次阅读 2020-04-13 21:07:27
    什么是路由路由就是以前写诗很厉害的 “路径的来由”,类似于java的...我们先找到laravel的项目路径,在这里找到名为routes的文件夹,这里是存储路由的地方,在该文件夹中我们能看到web.php文件,这里就是我们定...
  • laravel 路由在nginx不生效解决(宝塔面板) 1 找到站点 点击设置 2 点击配置文件 配置文件中加入代码 location / { try_files $uri $uri/ /index.php?$query_string; #开启路由访问,laravel项目改为此条 }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,978
精华内容 6,791
关键字:

laravel的路由

友情链接: Sonix_MCU_source.rar