在lessphp中从PHP解析字符串时无法注入较少的变量

时间:2012-08-01 13:35:54

标签: php less lessphp

我有以下less代码。我已经读过less.jsurl()声明中使用变量时存在限制因此我使用了两个建议的解决方法,但真正的问题是该变量来自PHP而且似乎不是正确传递,因为它从未被解释过。

我正在使用lessphp

也许我做错了什么。

PHP代码

$this->parsed_css = $this->lessc->parse( $this->parsed_css, array( 'fontdir', 'myfontdir' ) );

Less代码

@font-face {
    font-family: 'FontAwesome';
    src: url(%("%s/fontawesome-webfont.eot", @fontdir));
    src: url('@{fontdir}/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
         url('@{fontdir}/fontawesome-webfont.woff') format('woff'),
         url('@{fontdir}/fontawesome-webfont.ttf') format('truetype'),
         url('@{fontdir}/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),
         url('@{fontdir}/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
    font-weight: @fontdir;
    font-style: normal;
}

CSS输出

@font-face {
  font-family:'FontAwesome';
  src:url("/fontawesome-webfont.eot");
  src:url('/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('/fontawesome-webfont.woff') format('woff'), url('/fontawesome-webfont.ttf') format('truetype'), url('/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'), url('/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
  font-weight:;
  font-style:normal;
}

正如您所见,该变量永远不会被解释。

2 个答案:

答案 0 :(得分:1)

根据您的原始问题(在编辑中删除之前),变量的名称为$font_dir,但您在所有引用中都使用fontdir(无下划线)。

尝试为fontdir元素指定一个array('fontdir' => $font_dir)的值,例如:

$this->parsed_css = $this->lessc->parse( $this->parsed_css, array( 'fontdir' => $font_dir, 'myfontdir' => $my_font_dir) );

答案 1 :(得分:0)

我刚刚下载了less并对其进行了测试,这个数组似乎并不是您的代码无法运行的唯一原因。

这不是有效less代码(至少根据documentation

src: url('@{fontdir}/fontawesome-webfont.eot?#iefix') format('embedded-opentype')
//         ^       ^    Remove these

//Right
echo $less->parse("color: @color",
    array(
        'color' => 'red'
)); //color:red;

//Wrong
echo $less->parse("color: @{color}",
        array(
            'color' => 'red'
    )); // (no output)