0

here で説明されているように、 Bootstrap.php内でグローバル レイアウトのプレースホルダーを初期化します。

public function _initPlaceholders()
{
    $this->bootstrap('View');
    $view = $this->getResource('View');

    $view->doctype('XHTML11');

    $view->headTitle('Foo Bar Title')
         ->setSeparator(' :: ');

    $view->headMeta()->appendHttpEquiv(
        'content-type',
        'application/xhtml+xml; charset=UTF-8'
    );

    $view->headMeta()->appendName('robots', 'index,follow');

    $view->headLink()->appendStylesheet('/styles/styles.css', 'screen')
                     ->appendStylesheet('/styles/print.css', 'print');
}

レンダリングされた HTML は正しく表示されます。

<title>Foo Bar Title</title>
<link href="/styles/styles.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/styles/print.css" media="print" rel="stylesheet" type="text/css" />
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="robots" content="index,follow" />

しかし、Zend_Controller は CSS をコントローラーか何かだと認識しているため、CSS は正しく読み込まれません。CSS ファイルを開こうとすると、次のエラーが発生します。

致命的なエラー: キャッチされない例外 'Zend_Controller_Dispatcher_Exception' とメッセージ '無効なコントローラーが指定されました (エラー)'

ヒントはありますか?

[アップデート]

OK、次の行を .htaccess ファイルに追加しただけで、すべてが期待どおりに機能するようになりました...

RewriteRule !.(js|ico|txt|gif|jpg|png|css|htc|swf|htm)$ index.php

4

1 に答える 1

0

典型的な Zend プロジェクトのレイアウトは次のようになります。

.
|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |-- controllers
|   |-- forms
|   |-- layouts
|   |-- models
|   `-- views
|-- library
`-- public
    |-- images
    |   `-- favicon.ico
    |-- index.php
    |-- js
    |   `-- scripts.js
    `-- styles
        `-- style.css

あなたのは似ていますか?具体的には、(アプリケーション フォルダーではなく) public フォルダーのどこかに CSS および JavaScript ファイルがありますか? もしそうなら、ファイルのパーミッションを見直してもらえますか?

また、ファイルのパーミッションを見直すことをお勧めします。CSS ファイルが Apache プロセスで読み取れない場合、Apache はそれらを提供できません。

于 2011-06-14T16:01:30.540 に答える