【问题标题】:Using CakePHP HTML Helper to compile .less client-side使用 CakePHP HTML Helper 编译 .less 客户端
【发布时间】:2012-01-25 15:34:10
【问题描述】:

场景: 我在 Cake App 上使用 Less CSS 进行开发,我想按照文档中的建议在客户端编译 less 文件(我也在与其他几个程序员一起使用 git repo,所以我希望他们能够编辑更少的文件而不是 css ......当我重新编译时会被覆盖):

  <head> 
    . . .
    <link rel="stylesheet/less" type="text/css" href="styles.less">
    <script src="less.js" type="text/javascript"></script>
    . . .
  </head>

问题: 我将 less 文件存储在 webroot/css/lib 中,将 less.js 文件存储在 webroot/js/vendors 中,我想使用 HTML 帮助程序来构建链接/脚本标签:

<?php echo $this -> Html -> css('lib/style.less'); ?>
<?php echo $this -> Html -> script('vendors/less-1.2.1.min.js');?>

加载less.js没有问题。问题在于使用 css 助手时,Cake 会将 '.css' 附加到路径的末尾。

解决方案:……?

【问题讨论】:

  • 离题,但我建议您编译 Less 文件并将 css 文件提供给页面。
  • 这就是我一直在做的事情。但是我正在和其他一些人一起开发一个 Git 存储库。在我这边编译意味着在我的comp中保留较少的文件,并且每当其他人编辑CSS时,我下次编译时会不小心覆盖它
  • 您不能要求他们改为更改 .less 文件吗?
  • 只需编辑更少的文件,并提交更少的 + 编译的 css。让整个团队只使用更少的文件并像你一样提交:less+css。我知道使用 .js 编译器更容易,但另一方面,像我描述的那样工作并不是很成问题。
  • 更好的解决方案(实际上绕过整个问题)是实际使 .css 文件成为本地文件,而不是将其提交到源代码。保证避免 CSS 编辑中的冲突/覆盖,因为开发人员只能提交更少的内容。

标签: css cakephp html-helper less


【解决方案1】:

html 助手会检查是否有“?”在文件名中..如果没有,它会在末尾添加“.css”:

cake/libs/view/helpers/html.php (ln. 356)

if (strpos($path, '?') === false) {
    if (substr($path, -4) !== '.css') {
    $path .= '.css';
    }
}

也许你可以用这样的方式欺骗​​助手:

<?php echo $this -> Html -> css('lib/style.less?'); ?>

但我不确定它是否会起作用...您可能需要手动编写标签 =P

干杯

【讨论】:

  • 我能够通过添加 ? 来欺骗 CakePHP 2.0 中的 HtmlHelper到字符串的末尾。 echo $this->Html->css('main.less?','stylesheet/less');
  • 谢谢!我的问题的本质是如何覆盖 .css 附加到路径,所以这是完美的。
【解决方案2】:

另一个非常简单的解决方案是在没有帮助器的情况下包含 .less 文件:) 我不认为这对你的项目有很大的影响..

【讨论】:

    【解决方案3】:

    也许你喜欢这个插件:https://github.com/BradCrumb/lesscompiler

    是一个自动将less文件编译成css文件的组件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多