拉拉维尔 9 : How to extend UrlGenerator core class

标签 laravel binding extend laravel-9

我正在尝试扩展 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/

相关文章:

binding - Emberjs Controller 需要绑定(bind)

.net - 创建了可绑定(bind)的 WindowsFormsHost,但子更新未反射(reflect)到控件

node.js - Mongoose 架构字段定义问题(关键字 : nodejs, req.body、extend、field、type)

javascript - 扩展 Javascript 对象而不将属性分配给原型(prototype)?

php - 正确地从动态表单更新数据 Laravel

javascript - 转换 HTML Canvas 内容以在 Laravel 后端发送 Angular 表单数据请求

php - 用查询生成器/原始 MySQL 编写的查询之间有区别吗?

c# - WPF中的绑定(bind)问题——属性和字段的区别

java - 在java中扩展一个类,但它不会从父类(super class)继承属性

php - for 循环不工作