问题标签 [assetic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Symfony 2 中 CSS 文件中的资源路径
问题
我有一个CSS文件,其中包含一些路径(用于图像、字体等url(..)
)。
我的路径结构是这样的:
我想在样式表中引用我的图像。
第一个解决方案
我将 CSS 文件中的所有路径都更改为绝对路径。这不是解决方案,因为应用程序也应该(并且必须!)在子目录中工作。
第二种解决方案
将 Assetic 与filter="cssrewrite"
.
所以我将我的 CSS 文件中的所有路径更改为
表示从我的资源目录到该/web/images
目录的实际路径。这不起作用,因为 cssrewrite 生成以下代码:
这显然是错误的道路。
创建此路径后assetic:dump
,仍然是错误的:
Assetic的树枝代码:
当前(第三种)解决方案
由于所有 CSS 文件都以 . 结尾/web/css/stylexyz.css
,因此我将 CSS 文件中的所有路径都更改为相对路径:
这个(坏的)解决方案有效,但在dev
环境中除外:CSS 路径是/app_dev.php/css/stylexyz.css
,因此由此产生的图像路径/app_dev.php/images/myimage.png
是NotFoundHttpException
.
有没有更好的工作解决方案?
php - 使用资产提供相对图像
我正在尝试了解 symfony2 资产包。我正在尝试使用一个使用它自己的 css 文件的 jquery 插件。我已经把所有东西都放进去了mybundle/Resources/public
,然后分成了 images/javascript/ 和 css/
插件 css 使用相对路径来获取图像../images/sprite.png
使用assetic提供css文件:
Assetic 生成的路径是/app_dev.php/css/mycss.css
,我猜这是正确的。显然,相对图像路径现在不再起作用了。因为文件本身位于 mybundle/Resources/public 而不是 /images/
尝试使用 cssrewrite 过滤器时,路径被重写为:
http://server.com/Resources/public/images/sprite.png
。但这我不正确,文件不在那里。
我如何使用资产提供相关的图像?
windows - 如何让 Assetic + sass 在 Windows 中与 Symfony2 一起工作?
我试图让 Assetic 在 Symfony 2.0.11 中运行,以便将 sass 用于 css 文件。
我已经在这个问题上摆弄了几个小时,从我收集到的当前资产版本(1.0.2)被搞砸了,无法在 Windows 中工作。
我尝试从 github 将assetic 和asseticBundle 更新到最新的Master 版本,但是它们需要Symfony 2.1,它带来了很多变化并且不向后兼容(更不用说它也没有正式发布),所以这不是一个选择。
这篇文章symfony2 assetics yui 压缩器 on windows (path syntax)对此事提供了一些很好的见解,但不幸的是,它推荐的资产库的更改不足以使其在我的环境中正常工作。
我还在https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c和https://github.com/kriswallsmith/assetic/issues/25中发现了一些有趣的内容
最后,我所知道的是我需要更改 vendor/assetic/src/Assetic/Util/ProcessBuilder.php,也许是包中的一些其他文件,也许在我的 config.yml 文件中添加一些信息(似乎添加java 或 sass 的路径可能会有所帮助)。
我需要的是能够获得工作配置的人给我指点我所缺少的东西,或者理想情况下让那个该死的东西工作所需的步骤。
有人能胜任这项任务吗?
_____更新:还在挖,现在才3天:/
新元素:
1/ 根据https://bugs.php.net/bug.php?id=60120,php5.3.8的 proc_open 和数据 > 2048 字节 可能存在问题,从 git 存储库(https: //github.com/symfony/symfony/issues/3216)。发出“git config --global core.autocrlf input”并从 git 重新获取所有内容让我可以使用 php5.3.10 而不会崩溃。
2/ https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c看起来不错。我对 Process.php 中的路径进行了一些小的修改(参见https://github.com/kriswallsmith/assetic/issues/92),但我不确定这是否相关。无论如何,此时我从 Assetic 获得的命令行在 shell 中工作并输出预期的 css。
3/ sass.bat(位于 Ruby193\bin 中)需要有 ruby.exe 的绝对路径才能走得更远(我学到了很难的方法,如果你 var_dump 并杀死脚本,你只会看到错误消息正确的地方!)
现在,情况似乎好一些了,但仍然无法使用 sass(我认为它可以与其他一些过滤器一起工作)我设法在 Process.php 中(大约第 172 行)在“$data = fread($管道, 8192);" :脚本第二次在这个地方通过,$pipe 指向第二个资源,它永远不会返回......并且 php 卡住并且很难出来(我需要杀死/重新启动 wamp 至少两次才能能够进行另一次测试)
我真的不熟悉 proc_open 和流,我很难理解代码在那里试图做什么......
我希望这可以帮助下一个尝试让事情正常进行的人,并最终帮助我的案子。仍在寻找有关此事的一些支持!
_____更新:
进一步的测试让我意识到,当 sass 文件足够小时,我可以让“php app/consoleassetic:dump”工作。在我看来,实际的 css 规则(不包括变量定义和 mixins)在 php5.3.10 中需要小于 4096 字节,在 php 5.3.8 中甚至更少。这指向https://bugs.php.net/bug.php?id=60120和https://bugs.php.net/bug.php?id=51800中描述的 proc_open 错误
_____更新:
我尝试安装 php5.4 以检查它是否正在解决问题。我花了一些时间才意识到这个版本不能在我的电脑上运行的原因是因为还没有 x64 版本。然后我安装了 32 位版本的 wamp,并让 php5.4 轻松使用它。最终结果:proc_open 仍然挂起:(我开始在这里没有想法......
演练:
所以,最终我得到了这个工作,并认为我会尝试为后来的观众总结最重要的步骤:
1. 安装 Ruby 1.9.3 和 compass 0.12
检查http://rubyinstaller.org/downloads/
将指南针更新为 0.12
进而
2.修改compass中的compiler.rb
转到第10行的Ruby193\lib\ruby\gems\1.9.1\gems\compass-0.12.0\lib\compass,替换
和
/!\ 有一些设置,它可能是相反的方式,但是对于我试图描述的设置,它是这样的。
3. 将 Assetic 指向适用于 symfony 2.0.11 的最新版本
像这样编辑 deps 文件:
/!\ 您还需要删除对 deps.lock 文件中特定版本的引用!
并发出“php bin/vendors install”。
4. 改变你的 config.yml
这是我现在的样子:
5.在compass.bat/sass.bat中使用绝对路径
转到您的 Ruby193\bin 目录并编辑 compass.bat 以设置 ruby.exe 的绝对路径(对 sass.bat 执行相同操作)
6.更改模板中的调用
这是我现在的样子:
测试:
对于测试,您可以使用
这样,如果您像我一样进入无限循环,您只需 ctrl+C,这使得测试方式比在浏览器中更有效
/!\ 你绝对需要使用--no-debug,否则你的css中会出现一堆不需要的行,如下所示:
您可以使用
在运行方法中
向您显示当前的命令行,并对其进行测试。
我的目前看起来像这样:
然后,您只需在 cli 中键入“php app/console assetic:dump --no-debug”即可在 web\css 中创建 css 文件并刷新站点页面。等等……瞧!(希望!)
注意:您可能已经注意到,我使用的是 CompassFilter 而不是 SassFilter。那是因为它做同样的事情(甚至更多),并且实际上可以做我们期望的事情。如果有人能找出如何修复 SassFilter,那就太好了。与此同时,我已经在这方面花费了太多时间。
几天来我一直在发疯,我希望这篇文章对其他人的心理健康有所帮助;)
symfony - 正确的资产“过滤器”语法?
放置 'filter=...' 参数的正确位置在哪里?
我在引用的文件之前/之后/之间看到过它,但我不确定该位置是否有任何区别。
此外,是否可以对一个{% stylesheets ... %}
部分中的不同文件应用不同的过滤器?例如.. 让 'xxx' 适用于两个文件,'yyy'仅适用于 a.css & 'zzz'仅适用于 b.css
php - Assetic AssetFactory::createAsset(array $input, ...) - $input 不接受 \Assetic\Asset\* 元素
我有几种方法可以将许多 CSS 资产组合为一个,缩小它们并将它们转储(缓存)到生成的文件名,如“/assetic/6bad22c.css”。我通过使用以下内容来实现这一点:
目前我使用 AssetFactory
并通过创建资产
以下是参考的方法:
到目前为止,这里没有魔法。我的问题是,根据定义self::$stylesheets
,数组只包含资产的路径字符串。但我需要像这样使用真正的资产资产:
但AssetFactory::createAsset()
不接受自己的资产。我需要使用的可能性,StringAsset
因为我必须更改服务器端 CSS / JS 中的一些值。
除了使用还有其他方法可以实现这一点AssetFactory::createAsset()
吗?
symfony - 如何在 Symfony2 中结合这些资产?
我正在使用ExposeTranslationBundle(向 javascript 公开翻译)和JMSI18nRoutingBundle(向 javascript 公开路由)。这是我的<head>
标签的一部分:
是否可以将最后两个<script>
导入合并到第一个资产中,如何?
css - Symfony 2 Assetic 项目布局和资源管理
我正在尝试使用一个我正在开发的网站并将其调整为使用 symfony 框架,但我在 Web 开发方面相当新,并且有很多问题。
- 我很难让所有资源正确加载。我正在尝试使用资产,但无论我尝试什么,当我加载页面时,我都会收到数百个 404 not found 响应。我当前的目录结构如下:
- Symfony
- 源代码
- CS4750
- PhotoChallengeBundle
- 控制器
- 资源
- 配置
- 上市
- css
- 图像
- js
- 图书馆
- 图书馆X
- css
- 图像
- js
- 意见
我现在遇到的最大问题是css文件中的图像。我试过使用
但是所有路径都指向http://localhost/Symfony/web/Resources/public/img/*
而不是 http://localhost/Symfony/web/bundles/cs4750photochallenge/img
我先尝试而不做资产:安装网络然后这样做,但这些似乎都没有什么不同。如果有人帮助我解决这个问题,那就太棒了。
我遇到的另一个问题是一个 css 文件,它导入了两个额外的 css 文件。当页面加载额外的 css 文件时,也会返回 404 响应。
资产:安装和资产:转储有什么区别
我也有一个 js 文件返回服务器错误 500,但我解决它的方法与其他似乎工作正常的 js 文件相同。
任何上述问题的答案将不胜感激或链接到相关网站/帖子。我已经在互联网上挖掘了几个小时,但并没有真正取得任何进展。如果您需要我发布和编码或更详细地描述我的项目布局,请告诉我。
更多信息:
Config_dev.yml:
模板:
php - 资产转储错误:facebook cURL
我正在运行 Symfony2,并安装了 FOSFacebookBundle 来处理 facebook 连接。但是在安装了这个捆绑包之后,我无法做到
不再,因为抛出了这个错误:
我已经检查过了,并且 cURL 扩展安装在我的 PHP 中(它在 .ini 文件中,并且 facebook 连接也适用于我的网站,但是当我尝试运行上述命令时,此错误仍然出现在控制台中)
我该如何解决这个问题?
symfony - 解析 Smarty 模板而不触发对用户插件的调用
我正在编写一个 (Symfony2) SmartyBundle扩展来支持Assetic。
为了支持样式表功能,我注册了一个名为的块插件stylesheets
:
当 Symfony/assetic 缓存被创建时,这个插件被正确调用并且一切都按预期工作。
当 Symfony 缓存为空并且 Assetic 加载每个模板文件资源并要求模板引擎检索带有在样式表标签中找到的标记的 PHP 数组时,就会出现问题。调用来检索数组的类是SmartyFormulaLoader
.
在方法$smarty->fetch()
中调用时load()
抛出异常:Symfony\Component\Config\Exception\FileLoaderImportCircularReferenceException: Circular reference detected in "." ("." > ".")
.
这是由于 Smarty 模板被解析/编译和stylesheets
插件被再次调用造成的。
所以我问 Smarty 是否提供了一个模板解析器来提取块函数标记(不调用样式表插件),这样我就可以提供 Assetic。或者我可能缺少的任何其他解决方案来解决这个问题。
谢谢。
symfony - Symfony2:assetic 在 deps 中声明了两次
我刚刚将 Symfony 升级到 2.0.12 版本。在快速查看 deps 文件后,我意识到 Assetic 被声明了两次,并且有两个不同的版本。
和
这是为什么 ?是有具体原因还是疏忽?