无法覆盖冻结的服务 "twig.app_variable" - 资产功能的动态路径

Cannot override frozen service "twig.app_variable" - Dynamic path to asset function

我明白我收到的错误,但不明白为什么...

所以这是我的问题以及为什么会出现此错误:

1/ 我有一个 php 变量 $wdep,它提供了我需要找到 /web 文件(css、js、lib 和 img 的路径) :

if($_SERVER['SERVER_NAME'] == "127.0.0.1"){
    $wdep = "../../_wdep/v2/mywebsite/";
} else {
    $wdep = "https://wdep ... /v2/mywebsite/"; // I cut some info but the link is valid
}

2/ 现在,当我根据 Twig 文档注册我的 Twig Provider 时,我无法使用我的 css、js 等 :

$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/../views',
));
$app->register(new Silex\Provider\AssetServiceProvider(), array(
    'assets.version' => 'v1',
));

这行得通,但是在我的模板中但是当使用 asset() 函数时它不起作用:这是正常的,因为我需要添加我的 $wdep 路径来获取它,所以这个

<link type="text/css" rel="stylesheet" href="{{ asset('/lib/bootstrap/css/bootstrap.css') }}" />
<script type="text/javascript" src="{{ asset('/lib/jquery/jquery-3.3.1.min.js') }}"></script>
<img src="{{ asset('/img/logo/logo.png') }}" alt="Logo">

不工作。

3/ 根据有关 asset() 函数 (here) 的文档,我尝试执行那些

$app->register(new Silex\Provider\AssetServiceProvider(), array(
    'assets.version' => 'v1',
    'assets.base_urls' => $wdep
));

$app->register(new Silex\Provider\AssetServiceProvider(), array(
    'assets.version' => 'v1',
    'assets.named_packages' => array(
        'css' => array('base_urls' => array($wdep)),
        'img' => array('base_urls' => array($wdep)),
        'js'  => array('base_urls' => array($wdep)),
        'lib' => array('base_urls' => array($wdep)),
    ),
));

得到我的 Cannot override frozen service "twig.app_variable" 错误...

也许我遗漏了一些东西,但是你知道为什么以及如何将我的 $wdep 添加到我的 asset() 函数以使其工作吗?

我在注册 TwigServiceProvider()AssetServiceProvider():

后添加的这一行解决了我的问题
$app['assets.base_path'] = $wdep;

我用了一些 var_dump($app) 来找到它,但我想了解为什么我在注册 AssetServiceProvider() 时无法找到它?