无法覆盖冻结的服务 "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()
时无法找到它?
我明白我收到的错误,但不明白为什么...
所以这是我的问题以及为什么会出现此错误:
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()
时无法找到它?