gpt4 book ai didi

php - Laravel:如果运行某个中间件,则向模型添加全局范围

转载 作者:行者123 更新时间:2023-12-04 00:02:20 24 4
gpt4 key购买 nike

是否可以根据是否应用中间件来启用全局范围?

我有一个全局范围,我想为我网站的某个部分启用并禁用其余部分(客户与管理区域),我在想您是否可以通过检查中间件“EnableGlobalScopeMiddleware”是否已运行来做到这一点?

最佳答案

是的,创建中间件 EnableGlobalScopeMiddleware

php artisan make:middleware EnableGlobalScopeMiddleware
并将全局范围应用于 handle 中的模型功能
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Database\Eloquent\Model;

class EnableGlobalScopeMiddleware
{
public function handle($request, Closure $next)
{
Model::addGlobalScope('foo', function (Builder $builder) {
$builder->where('foo', 'bar');
});

return $next($request);
}
}
App\Http\Kernel注册中间件通过将其添加到 protected $routeMiddleware数组属性
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'global' => \App\Http\Middleware\EnableGlobalScopeMiddleware::class, // <-- Here
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
并将其应用于特定的路由,例如 /admin前缀路由组
Route::middleware(['global'])->prefix('admin')->group(function () {
// Routes here
});

关于php - Laravel:如果运行某个中间件,则向模型添加全局范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58671728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com