jmikola/js-assets-helper-bundle

将 Symfony2 模板组件中的 AssetsHelper 服务暴露给 JavaScript,允许客户端生成相对或绝对资产 URI。

安装次数: 12,581

依赖关系: 0

建议者: 0

安全性: 0

星标: 19

关注者: 7

分支: 4

公开问题: 0

语言:JavaScript

类型:symfony-bundle

v1.0.1 2013-06-24 13:49 UTC

This package is auto-updated.

Last update: 2024-09-06 08:54:14 UTC


README

此扩展将 Symfony2 模板组件中的 AssetsHelper 服务暴露给 JavaScript,允许客户端生成相对或绝对资产 URI。

兼容性

此扩展依赖于PR #2502,该依赖包含在 Symfony 2.0.5 及更高版本中。

配置

如果您未明确配置扩展,则它仅会暴露 FrameworkBundle 配置中的 templating 块中定义的默认包。

要暴露的命名包必须明确列出

jmikola_js_assets_helper:
    packages_to_expose: [ cloudfront, s3 ]

虽然数组形式的包名称是正常格式,但配置也将接受标量以暴露单个包

jmikola_js_assets_helper:
    packages_to_expose: cloudfront

在这些示例中,“cloudfront”和“s3”对应 FrameworkBundle 配置中的命名包。例如

framework:
    templating:
        # The default package will be a PathPackage
        assets_version:        123
        assets_version_format: "%%s?version=%%s"
        packages:
            # The cloudfront package will be a UrlPackage
            cloudfront:
                version:        123
                version_format: "%%s?version=%%s"
                base_urls:      https://example.cloudfront.net

有关配置模板资产包的更多信息,请参阅FrameworkBundle 文档

路由

该扩展定义了一个指向动态生成的 JavaScript 文件的路径。确保此路径包含在您的应用程序的路由配置中

jmikola_js_assets_helper:
    resource: "@JmikolaJsAssetsHelperBundle/Resources/config/routing/routing.xml"

资产

该扩展包含一个编译后的 JavaScript 资产,必须将其发布到您的 web/ 目录

$ php app/console assets:install --symlink web

将编译后的动态 JavaScript 包含在您的应用程序模板中

<script src="{{ asset('bundles/jmikolajsassetshelper/js/assets_helper.js') }}"></script>
<script src="{{ path('jmikola_js_assets_helper_js') }}"></script>

使用方法

配置完成后,该扩展在 JavaScript 中创建一个单独的 AssetsHelper 全局。这模仿了 Symfony2 模板组件中的 PHP 类,并具有以下方法

/**
 * Returns the public path.
 *
 * Absolute paths (i.e. http://...) are returned unmodified.
 *
 * @param string path        A public path
 * @param string packageName A package name (optional)
 *
 * @return string A public path which takes into account the base path and URL path
 */
function getUrl(path, packageName);

/**
 * Gets the version to add to public URL.
 *
 * @param string packageName A package name (optional)
 * @return string The current version
 */
function getVersion(packageName);

通常,您会想使用 getUrl() 方法生成资产路径。请注意,如果您引用了尚未暴露的命名包,将抛出 InvalidPackageError

以下等效代码片段演示了 AssetsHelper.getUrl() 与 Symfony2 的 Twig 资产辅助器的比较

// JavaScript
'<img src="' + AssetsHelper.getUrl('/images/logo.png') + '">';
{# Twig #}
<img src="{{ asset('/images/logo.png') }}">

开发

注意:此扩展包含一个静态 JavaScript 资产,它使用 Google 的 Closure Compiler 预编译。对静态 JavaScript 的任何更改都需要重新编译资产。为了您的方便,您可能想要安装 JMSGoogleClosureBundle 并使用以下命令

$ php app/console plovr:build @JmikolaJsAssetsHelperBundle/compile.js