Laravel8路由详解(Route)

Laravel8路由详解(Route)

Scroll Down

前言

路由只是意味着将应用程序 URL 映射到查看文件。这些负责处理 HTTP 请求。我们可以根据需要使用请求类型GET、POST、PUT、DELETE。

我们通过 web.php 文件为 Web 应用程序配置路由。此外,我们有一个不同的文件来处理 api.php 的 API 请求。在本文中,我们将详细了解 Laravel 8 路由。

我们将从非常基本的概念开始本教程,并以非常详细的内容结束。

让我们开始吧。

Laravel 8 应用安装

Laravel 是一个开源的、广泛用于 Web 应用程序的PHP 框架。它的语法、工作原理是如此富有表现力和优雅。在 Laravel 框架中开发 Web 应用程序如今在开发人员中非常流行。 Laravel 为开发环境提供了强大的功能和/或模块。

在 laravel 8 版本中工作和/或开发任何应用程序时。我们应该有一些PHP和系统配置的需要。我们已经有关于Laravel 8 安装的教程。单击此处转到文章并查看完整指南。

假设系统中已经安装了 laravel 8。接下来我们将继续学习路线教程。

Laravel 中的路由是什么?

路由只是意味着将应用程序 URL 映射到应用程序视图文件。它们通常处理 HTTP 请求并提供响应。在本文中,我们将看到以下内容 -

  • 基本路由配置
  • 使用视图文件路由
  • 使用控制器方法路由
  • 向路由发送参数
  • 带有正则表达式的路由
  • 重定向路由
  • 路由方法

因此,我们将一步一步地了解每个 Laravel 8 路由。

基本路由配置

正如我们已经讨论过的,我们在web.php文件中完成了 Web 应用程序的所有路由配置。您将在/routes文件夹中找到的文件 web.php

让我们在里面创建一个非常基本的路由——web.php

Route::get('about-us', function () {
  
    return 'Very basic route in application - Online Web Tutor Blog';
  
});

我们如何访问?

众所周知,我们有两个选项可用于将应用程序 URL 访问到浏览器。这些是以下方法。

  • php artisan serve
  • 按应用程序地址(也就是所说的线上)

假设应用程序已由php artisan serve命令提供服务。因此,要访问上述路线,我们在上面定义的将是 –

http://localhost:8000/about-us

这将简单地打印我们在闭包路由的回调函数中编写的静态消息。

使用视图文件路由

我们可以直接从 web.php 调用视图文件。无需创建任何控制器。

方法#1

web.php

Route::get('our-products', function () {
  
    return view("products"); // view file in /resources/views/products.blade.php
  
});

方法#2

这在 Laravel 中也称为查看路由。

web.php

// Route::view('route-name', 'view-file')

Route::view('our-products', 'products'); 

// view file in /resources/views/products.blade.php
​

因此,要访问上述路线,我们在上面定义的将是 –

http://localhost:8000/our-products

这将返回 products.blade.php 视图文件内容。

使用控制器方法路由

在 Laravel 8 路由中,这是最常用的方法。意味着我们将有一个路由和路由映射,控制器的方法和方法指向一个视图文件。

打开 web.php 文件 -

web.php

# Add these to headers
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SiteController;

//Route::get("/route-name", [SiteController::class, "method_name"]);

Route::get("services", [SiteController::class, "services"]);

接下来,我们需要创建控制器。控制器将存储在/app/Http/Controllers目录中。我们以两种不同的方式创建控制器。

  • 通过 php artisan 命令
  • 手动创建控制器的方法

我们将通过 artisan 命令创建控制器。

$ php artisan make:controller SiteController

SiteController.php

<?php

namespace App\Http\Controllers;

class SiteController extends Controller
{
    public function services()
    {
        return view("services");
    }
}

因此,要访问上述路线,我们在上面定义的将是 –

http://localhost:8000/services

这将返回 services.blade.php 视图文件内容。

向路由发送参数

此路由将向其关联的方法发送一些参数值。打开 web.php 文件 -
web.php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SiteController;

// Passing parameter to URL
Route::get("services/{service_id}", [SiteController::class, "services"]);

// Passing parameter to URL
Route::get('product/{id}', function ($id) {
    return 'Product ID '.$id;
});

// Passing values to view routes
Route::view('/about-us', 'about-us', ['name' => 'Sanjay Kumar']);


因此,要访问上述路线,我们在上面定义的将是 –

http://localhost:8000/services/101

这会将 101 值传递给控制器​​方法服务。返回控制器并访问此值。

SiteController.php

<?php

namespace App\Http\Controllers;

class SiteController extends Controller
{
    public function services($service_id)
    {
        //return "This is service we are using as an ID of ".$service_id;
      
        return view("services", ["id" => $service_id]);
    }
}

还有一件事,这个参数是我们传递到 URL 的路由的必需值。如果我们不通过,那么它会给出关于缺少参数的错误。在某些情况下,我们需要传递参数但作为可选值。意味着我们要创建可选参数。所以为此,

web.php

Route::get('product/{id?}', function ($id = null) {
  
    return "Product: ". $id;
  
});

在这种情况下,我们可以传递值或不需要传递值。现在是可选的。

带有正则表达式的路由

在路由配置中,正则表达式设置参数的值模式。从上面的讨论中,我们了解了将参数值传递给路由。

现在,如果我们将占位符设置为接受一些模式值,例如 –

web.php

Route::get('product/{name}', function ($name) {
  
    return "Product Name: ". $name;
  
})->where('name', '[A-Za-z]+');


此处,
是必需参数。并通过使用 where 占位符“名称”,如您所见,我们已经为它设置了一个模式。在 中,我们可以在 AZ 或 az 之间传递值。表示仅接受字符串值。如果我们发送任何整数,它会给出错误。

传递整数值 –

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

路由中传递的两个参数。

Route::get('student/{id}/{name}', function ($id, $name) {
  
    return "Student name: ".$name." and ID : ".$id;
  
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

这里,我们在web.php 中配置了一些路由

<?php

use Illuminate\Support\Facades\Route;

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

Route::get('about-us', function () {
    return 'Very basic route in application - Online Web Tutor Blog';
});

Route::get('our-products', function () {
    return view("products"); // view file in /resources/views/products.blade.php
});

Route::get('product/{id}', function ($id) {
    return 'Product ID '.$id;
});


要检查 laravel 应用程序中的所有可用路由,我们有一个 artisan 命令来列出所有路由。工匠命令检查所有路线 -

$ php artisan route:list

重定向路由

如果我们想将一些 URL 和/或路由重定向到一些不同的 URL,我们可以使用重定向路由的概念。默认情况下 Route::redirect 返回 302 状态代码。但是如果我们想要改变,我们可以传入它的语法。

web.php

// 当我们打开 http://localhost:8000/source-url 时,它将被重定向到 
// http://localhost:8000/destination-url
​
Route::redirect('/source-url', '/desitnation-url');

//Route::redirect('/source-url', '/desitnation-url', 301);

路由方法

Laravel 8 中的路由器允许我们将响应任何 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);

根据请求类型,我们可以进一步使用 Route 方法。要了解有关 Laravel 8 中路由的更多信息,您可以在官网查看可用文档。

我们希望本文能帮助您以非常详细的方式学习 Laravel 8 路由。