您现在的位置是:自如初>LaravelLaravel

Laravel8路由问题解决方法

温新 2020-10-10 00:11:46 Laravel 5992人已围观

简介关于Laravel8路由问题的变动,不知道你是否有不习惯,反正我是不习惯。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日

很赞哦!(46)

文章评论

登录 注册

自如初--时间轴

QQ登录

站名:自如初

独白:向前走!向前走!

邮箱:xyhcx@foxmail.com

站点信息