在刀片中使用它的客户中间件

问题描述 投票:0回答:1

我如何使用此自定义中间件HouseOwnerMiddleware。我的想法是,如果我可以在刀片中使用@guest,为什么不同时使用@houesowner

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,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'houseowner' => \App\Http\Middleware\HouseOwnerMiddleware::class, // THIS PART
    ];

但是我不能这样做。您如何推荐我使用它?

@houseowner
<a class="dropdown-item" href="/houseowner/roomid/1/userid/{{Auth::id()}}/images/create">
     Upload images
</a>
@end

自定义中间件在这里,为简单起见,我将if语句设为TRUE。因此,每个人现在都可以通过此声明。

class HouseOwnerMiddleware
{
    public function handle($request, Closure $next)
    {
        if(true){
            return $next($request);
        }
    }
}
laravel laravel-blade laravel-middleware
1个回答
0
投票

嗯,我不确定您要在这里做什么。


中间件

A Middleware用于在请求中间应用逻辑(例如,检查授权,添加重定向,修改请求)。 您编写的中间件将运行,但对您的请求不起作用!

if (true) {
    return $next($request);
}

if条件将始终通过,但是它所做的只是说“移至请求的下一部分”

关于中间件的文档可以找到here


刀片指令

如果要扩展Blade并注册新的指令,例如@houseowner,则可以在ServiceProvider这样的AppServiceProvider中执行此操作,如下所示:

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Blade::directive('houseowner', function ($expression) {
        // Return your custom markup here
        return "<?php echo "houseowner"; ?>";
    });
}

有关扩展刀片模板的文档可以找到here


刀片逻辑

我怀疑您要尝试做的是一些条件逻辑,如果用户是“房主”,则显示a标签?

您可以使用标准刀片逻辑语句执行此操作,如下所示:

@if (Auth::user->isHouseOwner())
<a class="dropdown-item" href="/houseowner/roomid/1/userid/{{Auth::id()}}/images/create">
     Upload images
</a>
@endif

您当然需要在isHouseOwner()模型上创建一个名为User的方法。


听起来您是Laravel的新手,我强烈建议您花些时间阅读文档。祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.