Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 在BlockService中使用命名资产资源_Symfony_Assetic_Symfony Sonata - Fatal编程技术网

Symfony 在BlockService中使用命名资产资源

Symfony 在BlockService中使用命名资产资源,symfony,assetic,symfony-sonata,Symfony,Assetic,Symfony Sonata,我应该将哪个服务注入到我的自定义块服务中,以便使用assetic为特定于块的资源(js和css)生成有效的绝对url?我想要这样的东西: class CustomBlockService扩展了Sonata\BlockBundle\Block\BaseBlockService{ 受保护的$urlmaker; 函数构造($name、$templating、SomeService$urlmaker){ 父项::_构造($name,$templating); $this->urlmaker=$urlma

我应该将哪个服务注入到我的自定义块服务中,以便使用assetic为特定于块的资源(js和css)生成有效的绝对url?我想要这样的东西:

class CustomBlockService扩展了Sonata\BlockBundle\Block\BaseBlockService{
受保护的$urlmaker;
函数构造($name、$templating、SomeService$urlmaker){
父项::_构造($name,$templating);
$this->urlmaker=$urlmaker;
}
公共函数getStylesheets($media)
{
返回数组(
$this->urlmaker('treegrid_css');
);
}
公共函数getJavascripts($media)
{
返回数组(
$this->urlmaker('treegrid_js');
);
}
//其他同学
}
背景 我正在使用输出一些自定义块。有些块需要Java脚本(或css),而这些脚本在其他任何地方都不使用。因此,在我的基本模板中,我做了以下操作:

    {% block javascripts %}
        <!-- scripts on every page -->
        {% javascripts
              '@jquery_js'
              '@bootstrap_js'
              '@select2_js'
              '@sonata_base_js'
        %}
              <script type="text/javascript" src="{{ asset_url }}"></script>
        {% endjavascripts %}

        <!-- BLOCK-SPECIFIC scripts -->
        {{ sonata_block_include_javascripts('all') }}
    {% endblock %}
My Symfony项目的建立是为了让Bower管理的组件在此活动:

%kernel.root.dir%/Resources/components/bower\u components
,一个相对于
web
输出的路径

我有一个Assetic的配置文件Assetic.yml,它命名了我可能要包含的每个资源。通过这样做,当我从开发环境切换到产品环境时,我不必与Assetic就文件路径进行斗争。我也不必依赖与第三方软件包捆绑在一起的资源,除非我愿意。(例如,无数不同版本的jQuery,每个包一个!)

assetic.yml摘录

assets:
    jquery_js:
      inputs:
        - '%kernel.root_dir%/Resources/components/bower_components/jquery/jquery.min.js'
    jqueryui_js:
      inputs:
        - '%kernel.root_dir%/Resources/components/bower_components/jqueryui/ui/minified/jquery-ui.min.js'
        - '%kernel.root_dir%/Resources/components/bower_components/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js'
    bootstrap_js:
      inputs:
        - %kernel.root_dir%/Resources/components/bower_components/bootstrap/dist/js/bootstrap.min.js
    treegrid_js:
      inputs:
        - %kernel.root_dir%/Resources/components/bower_components/treegrid/js/jquery.treegrid.js
        - %kernel.root_dir%/Resources/components/bower_components/treegrid/js/jquery.treegrid.bootstrap3.js
    main_css:
      inputs: 
        - %kernel.root_dir%/Resources/components/css/main.css
      filters: [cssrewrite]
    treegrid_css:
      inputs:
        -%kernel.root_dir%/Resources/components/bower_components/treegrid/css/jquery.treegrid.css