Laravel8路由问题解决方法
关于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
请登录后再评论