我正在尝试扩展 UrlGenerator
类,以便添加自定义 temporaryTenantSignedRoute
,然后按如下方式使用它:
Url::temporaryTenantSignedRoute(...)
所以,我创建了一个类 CustomUrlGenerator :
<?php
namespace Domain\Shared\Support;
use Illuminate\Support\Arr;
use Illuminate\Routing\UrlGenerator;
class CustomUrlGenerator extends UrlGenerator
{
public function temporaryTenantSignedRoute($name, $expiration, $parameters = [], $absolute = true)
{
return $this->tenantSignedRoute($name, $parameters, $expiration, $absolute);
}
public function tenantSignedRoute($name, $parameters = [], $expiration = null, $absolute = true)
{
$this->ensureSignedRouteParametersAreNotReserved(
$parameters = Arr::wrap($parameters)
);
if ($expiration) {
$parameters = $parameters + ['expires' => $this->availableAt($expiration)];
}
ksort($parameters);
$key = call_user_func($this->keyResolver);
return tenant_route(tenant()->domain, $name, $parameters + [
'signature' => hash_hmac('sha256', tenant_route(tenant()->domain, $name, $parameters, $absolute), $key),
], $absolute);
}
}
我已经在 AppServiceProvider
中注册了它,如下所示:
$this->app->bind(UrlGenerator::class, CustomUrlGenerator::class);
但是这不起作用! 有什么帮助吗?谢谢
最佳答案
适合我
$this->app->extend('url', function (\Illuminate\Routing\UrlGenerator $urlGenerator) {
return new \App\Helpers\UrlGenerator(
$this->app->make('router')->getRoutes(),
$urlGenerator->getRequest(),
$this->app->make('config')->get('app.asset_url')
);
});
关于拉拉维尔 9 : How to extend UrlGenerator core class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72256721/