2

私は次のlessコードを持っています。less.js宣言で変数を使用する場合には制限があることを読んだurl()ので、2つの推奨される回避策を使用しましたが、実際の問題は、変数が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;
}

ご覧のとおり、変数が解釈されることはありません。

4

2 に答える 2

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) );
于 2012-08-01T13:39:35.147 に答える
0

ダウンロードlessしてテストしたところですが、コードが機能しない理由は配列だけではないようです。

これは有効なlessコードではありません(少なくともドキュメントによると)

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)
于 2012-08-01T14:04:58.370 に答える