jmikola / js-assets-helper-bundle
将 Symfony2 模板组件中的 AssetsHelper 服务暴露给 JavaScript,允许客户端生成相对或绝对资产 URI。
Requires
- php: >=5.3.2
- symfony/dependency-injection: >=2.0.5,<3.0-dev
- symfony/framework-bundle: ~2.0
- symfony/twig-bundle: ~2.0
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