9

CSS ファイルを頻繁に使用して Web サイトをデザインしていますが、背景画像、リスト内の箇条書きの画像がいくつかあり、おそらく cssurl()関数の別の必要性が見つかるでしょう。

しかし、cake では、すべての URL をRoute::url()関数で処理する必要があります。いくつかの方法で、最も一般的なのは$html->url()

しかし、私の問題は、CSS ファイルが PHP によって解釈されないことです。次のようなものを含む CSS ファイルを作成する方法:

div.coolbg {
  background-image: url('<?= $html->url("/img/coolbg.jpg") ?>');
}

私の最後のオプションは、css ファイルをレイアウト上にインラインでインポートして、解釈できるようにすることです。しかし、私はより「ケーキ」なアプローチを使用することを強く好みます。

ありがとう!

4

7 に答える 7

1

の行をbackgroundに変更します

background:url(../img/menu_027_l.jpg) no-repeat left;
于 2010-11-13T20:32:56.173 に答える
1

私は間違いなくzam3858によ​​って提案された解決策に行きます。イメージを 2 つの異なる場所に配置したくない場合は、イメージを指すシンボリック リンクを css ディレクトリに作成します。このような:

$ cd app/webroot/css 
$ ln -s ../img .

これで、html ヘルパーとスタイル シートの両方でイメージ パスが正しく解決されます。

// css:
url(img/image.png);

// view.ctp
echo $html->image('image.png');

これは最も厄介なソリューションではないかもしれませんが、cakephp が提供しているようには見えません。

于 2009-11-04T21:28:27.903 に答える
0

これは、最初に Cake オブジェクトをインスタンス化しない限り、Cake に関してはあまり役に立ちません。html ヘルパーを使用したい場合は、おそらく最初の Cake オブジェクトがどのようにインスタンス化されるかを理解し、CSS でそれを模倣する必要があります。これをどのように行うか正確にはわかりません-CSSController全体を持つのはやり過ぎだと思いますが、アプリコントローラーをインスタンス化する必要があるかもしれないと思います(結局のところ、書き換えられたcss URLにアプリの設定を反映させたいと思いますよね? )。とにかくCSSControllerを作成する必要があるかもしれません。

于 2009-02-04T19:18:51.487 に答える
0

Cakephp の専門家の多くは、おそらくこれを提案したことで私を嫌うでしょう.. :)

私にとって最も簡単な解決策は、画像ファイルを css フォルダーに含めることでした。このようなもの

/app/webroot/css/css_images/mypic.jpg

したがって、CSSファイルに次のように入力します。

background-image: url(css_images/mypic.jpg);

悪いことは、明らかにそれが最も厄介なことではないということです. 良いことは、css が css ファイルに関連する画像を見つけるため、派手な URL を使用しているかどうかに関係なく機能することです。

于 2009-02-11T09:43:06.670 に答える
0

CakePHP のヘルパーに CSS を埋め込むと、CSS の相対 URL がバラバラになることがわかりました。これは、ルーターが異なる URL を同じページにマップできるため、相対 URL が異なる必要があるためです。たとえば、localhost/myapp/parts/index または localhost/myapp/parts/ または localhost/myapp/parts のような URL がある場合、../img/image.gif の相対 URL はそれらの 1 つに対してのみ機能します。

私のヘルパーで回避する唯一の方法は、CSSをこのようにすることでした

.jquery-dialog-spinner {
    display:    none;
    position:   fixed;
    z-index:    1010;
    top:        0;
    left:       0;
    height:     100%;
    width:      100%;
    background: rgba( 0, 0, 0, .1 ) 
            url('__loader_image__') 
            50% 50% 
            no-repeat;

}

css を出力する前に、タグをコード内の生成された URL に置き換えます。

  $map = array(
      '__loader_image__' => $this->Html->assetUrl('ajax-loader.gif', array('pathPrefix' => IMAGES_URL))
  );
  $formatted_css = strtr($this->css, $map);
  $response .= "<style type=\"text/css\">" . $formatted_css . "</style>";

これを行う簡単な方法があれば、コメントをいただければ幸いです。

于 2012-10-26T16:20:12.360 に答える
0

Apache で .htaccess ファイルを編集することにより、PHP で処理される CSS を追加できます。吐き出すだけではなく、処理するとパフォーマンスがわずかに低下します。

AddType application/x-httpd-php .css

また、以下を参照してください: http://www.webmasterworld.com/forum88/5648.htm

于 2009-02-04T18:10:44.293 に答える