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

时间:2018-03-20 11:03:40

标签: php symfony frameworks twig silex

我理解我得到的错误,但无法理解为什么......

所以这是我的问题以及为什么我收到此错误:

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

/web

2 /现在,当我根据Twig文档注册我的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 } 时,我无法使用我的css,js等:

Twig Provider

这很有效,但是在我的模板中,但是当使用$app->register(new Silex\Provider\TwigServiceProvider(), array( 'twig.path' => __DIR__.'/../views', )); $app->register(new Silex\Provider\AssetServiceProvider(), array( 'assets.version' => 'v1', )); 函数时,它不起作用:它是正常的,因为我需要添加asset()路径来获取它,所以这个

$wdep

不能工作。

3 /根据有关<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"> 函数(here)的文档,我尝试过这些

asset()

OR

$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函数中以使其正常运行?

1 个答案:

答案 0 :(得分:0)

我使用我在注册TwigServiceProvider()AssetServiceProvider()后添加的这一行解决了我的问题:

$app['assets.base_path'] = $wdep;

我使用了一些var_dump($app)来查找它,但我想了解为什么在注册AssetServiceProvider()时我无法执行此操作?