Php 多实体类型的Laravel子域路由
我有一个项目,其中有多个子域。 例如,我有一个学生子域,它指向一个学生控制器,它如下所示:Php 多实体类型的Laravel子域路由,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个项目,其中有多个子域。 例如,我有一个学生子域,它指向一个学生控制器,它如下所示: Route::domain('students.domain.test')->group(function () { Route::get('/', function () { return "done reaching the students page"; }); }); Route::group([ 'middleware' => [
Route::domain('students.domain.test')->group(function () {
Route::get('/', function () {
return "done reaching the students page";
});
});
Route::group([
'middleware' => ['type:journal']
],function () {
Route::get('/', function(){
return 'journals logic goes here';
});
});
public function handle($request, Closure $next, ...$types)
{
$currentEntity = app('current_entity');
if ($currentEntity->entityType()->whereIn('title->en', $types)->exists()) {
abort(404, 'Sorry, Request Not Found');
}
return $next($request);
}
Route::group([
'middleware' => ['except_entity:journal']
], function(){
Route::get('/', function(){
return 'default pages when journals fails';
})->name('index');
第二种类型的域是“domain.test”和我在请求级别检查的任何子域,也可以
Route::get('/', [HomeController::class, 'index'])->name('index');
但是在第二类域之前,我想为数据库中的特定类型的实体创建子域
Route::domain('{someTypes}.domain.test')
->group(function () {
Route::get('/', function () {
return "done reaching SomeTypes Page";
});
});
我的实体表有以下属性:Id、Title、Type“我想检查其类型是否为5”
我尝试使用中间件:
public function handle($request, Closure $next, ...$types)
{
$currentEntity = app('current_entity');
if ($currentEntity->entityType()->whereIn('title->en', $types)->exists()) {
return $next($request);
}
abort(404, 'Sorry, Request Not Found');
}
我将其应用于我的路线,如下所示:
Route::domain('students.domain.test')->group(function () {
Route::get('/', function () {
return "done reaching the students page";
});
});
Route::group([
'middleware' => ['type:journal']
],function () {
Route::get('/', function(){
return 'journals logic goes here';
});
});
public function handle($request, Closure $next, ...$types)
{
$currentEntity = app('current_entity');
if ($currentEntity->entityType()->whereIn('title->en', $types)->exists()) {
abort(404, 'Sorry, Request Not Found');
}
return $next($request);
}
Route::group([
'middleware' => ['except_entity:journal']
], function(){
Route::get('/', function(){
return 'default pages when journals fails';
})->name('index');
我还有另一个中间件可以忽略如下类型:
Route::domain('students.domain.test')->group(function () {
Route::get('/', function () {
return "done reaching the students page";
});
});
Route::group([
'middleware' => ['type:journal']
],function () {
Route::get('/', function(){
return 'journals logic goes here';
});
});
public function handle($request, Closure $next, ...$types)
{
$currentEntity = app('current_entity');
if ($currentEntity->entityType()->whereIn('title->en', $types)->exists()) {
abort(404, 'Sorry, Request Not Found');
}
return $next($request);
}
Route::group([
'middleware' => ['except_entity:journal']
], function(){
Route::get('/', function(){
return 'default pages when journals fails';
})->name('index');
并将其应用于其他路线,如下所示:
Route::domain('students.domain.test')->group(function () {
Route::get('/', function () {
return "done reaching the students page";
});
});
Route::group([
'middleware' => ['type:journal']
],function () {
Route::get('/', function(){
return 'journals logic goes here';
});
});
public function handle($request, Closure $next, ...$types)
{
$currentEntity = app('current_entity');
if ($currentEntity->entityType()->whereIn('title->en', $types)->exists()) {
abort(404, 'Sorry, Request Not Found');
}
return $next($request);
}
Route::group([
'middleware' => ['except_entity:journal']
], function(){
Route::get('/', function(){
return 'default pages when journals fails';
})->name('index');
我希望我想要达到的目标是明确的。首先,你需要检查一下你使用的是什么版本的laravel 您需要使用中间件。我认为,使用Laravel6、7或8编码的方法有点不同
你能给我们更多关于你的代码的信息吗,这样我们可以更容易地帮助你吗?你在这里遇到了什么问题?我想检查“someType”是一个实体的id,它的类型是5而不是任何其他类型,然后创建一个中间件并执行该检查我有一个中间件,但它在第一个类型上中止了404,如果类型未通过检查,我可以让它将结果传递到另一个路由吗?我认为您应该尝试使用中间件,如果不工作,请询问
,以便我使用laravel 7。我编辑了这篇文章你可以查看