使用MeEdu开发插件,今天遇到一个大无语的问题,处理了将近一个半小时,最终处理了。
这个问题就是:视图模板无法继承。
具体原因:
在Provider.php文件里面注册的路由是这样的:
// 注册路由 $this->loadRoutesFrom(__DIR__ . '/routes/web.php'); $this->loadRoutesFrom(__DIR__ . '/routes/api.php'); $this->loadRoutesFrom(__DIR__ . '/routes/backend.php');
然后写的路由是这样的:
Route::get('/school', SchoolController::class . '@index')->name('school.index'); Route::get('/school/details/{id}', SchoolController::class . '@show')->name('school.show'); Route::get('/major', SchoolMajorController::class . '@index')->name('major.index'); Route::get('/major/details/{id}', SchoolMajorController::class . '@show')->name('major.show');
最后使用模板继承:
@extends('layouts.app') @section('content') <h1>HELLO MEEDU.</h1> @endsection
然后就报500错误,原因是这里继承的 layouts.app 文件是最外层的目录。
如何修改?需要有web,global.share 中间件
方法一:前台路由注册采用这种方式:
// 注册路由 Route::middleware(['web', 'global.share'])->group(base_path('addons/School/routes/web.php'));
方法二:修改路由
首先是这样注册的前台路由:
// 注册路由 $this->loadRoutesFrom(__DIR__ . '/routes/web.php');
然后修改路由:
Route::group(['middleware' => ['web', 'global.share']], function () { Route::get('/school', SchoolController::class . '@index')->name('school.index'); Route::get('/school/details/{id}', SchoolController::class . '@show')->name('school.show'); Route::get('/major', SchoolMajorController::class . '@index')->name('major.index'); Route::get('/major/details/{id}', SchoolMajorController::class . '@show')->name('major.show'); });
也是醉了,这个问题我整了一个半小时。