Laravel8路由问题解决方法

作者: 温新

分类: 【Laravel】

阅读: 8015

时间: 2020-10-09 16:11:46

关于Laravel8路由问题的变动,不知道你是否有不习惯,反正我是不习惯。Laravel8中的路由按照我们之前的习惯来写,你会惊奇的发现,报错了。会产生一种摸不着头脑的感觉。

按照官方推荐的写法来编码自然是不会报错的,但是,如果还是按照Laravel8之前的写法来编码就有问题了。那么如何解决问题?

先来写写官方推荐的写法:

官方推荐写法

routes/web.php

<?php

use Illuminate\Support\Facades\Route;

# 引入控制器文件
use App\Http\Controllers\IndexController;

# 路由文件
Route::get('/' , [IndexController::class , 'index']);

IndexController 控制器文件

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class IndexController extends Controller
{
	public function index() {
		return 'hello IndexController';
	}
    
	public function test() {
		return 'test';
	}
}

这是IndexController所对应的路由及其文件。如果现在有个文章控制PostController文件,那么就需要再路由文件中引入这个控制器,然后再定义相关的路由。要是有N多个控制器文件,那么就需要在web.php文件中引入N多个控制器,给人感觉就已经不简洁了。

web.php

<?php
use App\Http\Controllers\PostController;
use App\Http\Controllers\TagController;

Route::get('post/lst' , [PostController::class , 'index']);
Route::get('tag/lst' , [TagController::class , 'index']);

下面就是按照以前的写法的解决方法

Laravel8之前的写法

第一步:打开 App\Providers\RouteServiceProvider.php文件

第二步:添加属性

<?php

namespace App\Providers;

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;

class RouteServiceProvider extends ServiceProvider
{
    # 添加该属性就可以按照之前习惯的写法编码了
    protected $namespace = "App\Http\Controllers";
	...
}

第三步:实测

web.php

<?php

use Illuminate\Support\Facades\Route;

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

2020-10-10

请登录后再评论