在 blade 中使用它的自定义中间件
Custome Middleware using it in blade
如何使用这个客户中间件HouseOwnerMiddleware。我的想法是,如果我可以在 blade 中使用 @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);
}
}
}
嗯,我不确定你想在这里做什么。
中间件
A Middleware
用于在请求中间应用逻辑(例如检查授权、添加重定向、修改请求)。 您编写的中间件将运行但不执行您的请求!
if (true) {
return $next($request);
}
if 条件总是会通过,但它所做的只是说 "move onto the next part of the request"
可以找到有关中间件的文档here
Blade 指令
如果您想扩展 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"; ?>";
});
}
可以找到有关扩展 Blade 模板的文档 here
Blade逻辑
我怀疑你试图做的是一些条件逻辑,如果用户是 "houseowner"?
则显示 a
标签
您可以使用标准 blade 逻辑语句来执行此操作,如下所示:
@if (Auth::user->isHouseOwner())
<a class="dropdown-item" href="/houseowner/roomid/1/userid/{{Auth::id()}}/images/create">
Upload images
</a>
@endif
当然,您需要在 User
模型上创建一个名为 isHouseOwner()
的方法。
听起来您对 Laravel 还很陌生,我强烈建议您花一些时间阅读文档。祝你好运!
如何使用这个客户中间件HouseOwnerMiddleware。我的想法是,如果我可以在 blade 中使用 @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);
}
}
}
嗯,我不确定你想在这里做什么。
中间件
A Middleware
用于在请求中间应用逻辑(例如检查授权、添加重定向、修改请求)。 您编写的中间件将运行但不执行您的请求!
if (true) {
return $next($request);
}
if 条件总是会通过,但它所做的只是说 "move onto the next part of the request"
可以找到有关中间件的文档here
Blade 指令
如果您想扩展 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"; ?>";
});
}
可以找到有关扩展 Blade 模板的文档 here
Blade逻辑
我怀疑你试图做的是一些条件逻辑,如果用户是 "houseowner"?
则显示a
标签
您可以使用标准 blade 逻辑语句来执行此操作,如下所示:
@if (Auth::user->isHouseOwner())
<a class="dropdown-item" href="/houseowner/roomid/1/userid/{{Auth::id()}}/images/create">
Upload images
</a>
@endif
当然,您需要在 User
模型上创建一个名为 isHouseOwner()
的方法。
听起来您对 Laravel 还很陌生,我强烈建议您花一些时间阅读文档。祝你好运!