symfonyでCSS,JSを絶対パスで読み込ませる
view.ymlでstylesheetsを指定すると相対パスで読み込まれます。普段はこれで問題ないのですが、絶対パスで読み込ませたい場面に遭遇したのでメモしときます。
解決方法
view.ymlに記述するファイル名を絶対パスで記述する。
まんまですね。
パス取得
symfonyは、yamlファイル内にもPHPがかけるので、PHP埋め込みます。
長かったので、クラス化してyamlファイルから呼び出してます。
<?php // lib/Route.class.php class Route { static public function getRoute() { // homepageまでのURLを絶対パスで取得 $url = sfContext::getInstance()->getController()->genUrl(array('sf_route' => 'homepage'), true); // frontend_dev.php があった場合は余計なので削除 // この処理がいまいち $url = preg_replace('/\/frontend_dev\.php/', '', $url); return $url; } }
# apps/frontend/config/view.yml all: stylesheets: - "<?php echo Route::getRoute().'css/aaa.css' ?>" - "<?php echo Route::getRoute().'css/bbb.css' ?>"