如何在Sonata Admin中设置路由的主机?

时间:2019-08-15 12:52:53

标签: symfony sonata-admin sonata symfony-sonata

如何使奏鸣曲始终使用根域生成的URL? 我有一个网站,有些页面在根域上,有些页面在子域上。 即使链接位于子域上,我也需要具有URL来编辑始终引用根域的帖子。

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

1 个答案:

答案 0 :(得分:0)

看来我可以解决奏鸣曲的问题 添加到奏鸣曲中的路由选项和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);
    }
}

当我在树枝URL功能中使用时,即使在 来自子域的页面。