前言
路由只是意味着将应用程序 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 路由。
评论区