如何在奏鸣曲管理员中为路由设置主机?

Posted

技术标签:

【中文标题】如何在奏鸣曲管理员中为路由设置主机?【英文标题】:How to set host for routes in sonata admin? 【发布时间】:2019-12-21 21:52:43 【问题描述】:

如何让奏鸣曲始终使用根域作为它生成的 url? 我有一个站点,有些页面在根域上,有些在子域上。 我需要有 url 来编辑总是引用根域的帖子,即使链接在子域上。

<a href=" path('admin_prefix_post_post_edit', id: post.id) " rel="nofollow" target="_blank">Edit</a>

【问题讨论】:

【参考方案1】:

看来我可以解决奏鸣曲的问题 在 routing.yml 中添加奏鸣曲路由选项和默认值

admin_area:
    resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
    prefix: /backoffice
    options:
        compiler_class: 'MyApp\Router\RouteCompiler'
    defaults:
        default_host: %router.request_context.host%

_sonata_admin:
    resource: .
    type: sonata_admin
    prefix: /backoffice
    options:
        compiler_class: 'MyApp\Router\RouteCompiler'
    defaults:
        default_host: %router.request_context.host%

router.request_context.host 是我的根域。

路由编译器类如下:

class RouteCompiler extends BaseRouteCompiler

    public static function compile(Route $route)
    
        if ($route->getHost() === "") 
            $route->setHost($route->getDefaults()['default_host']);
        
        return parent::compile($route);
    

当我在 twig url 函数中使用时,即使在 来自子域的页面。

【讨论】:

以上是关于如何在奏鸣曲管理员中为路由设置主机?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置路由器的NAT端口映射

如何使用奏鸣曲管理员创建自定义列表

Laravel 子域路由设置

如何在 Docker 容器之间设置网络

在 API 网关中为 REST API 设置 $default 路由

TPLINK路由请问如何设置能让外网访问SVN服务器?