symfonyでスマホの時にスタイルシートやJavascriptを切り替えたい時はどうするのが正しいんだろ。
symfonyでスマホの時にスタイルシートやJavascriptを切り替えたい時はどうするのが正しいんだろ。
時間も無いので下記のようなヘルパープラグイン作ってテンプレートに仕込んでみたんだけど、これでいいのかな。
(PC用がfoo.cssやbar.jsの時に、スマホの時はfoo_sp.cssやbar_sp.jsに変えて出力する)
いちおう切り替わっているみたいだけど。微妙に気持ち悪い。
SmartphoneHelper.php
function smartphone_header_scripts($suffix = "_sp")
{
$ua = $_SERVER['HTTP_USER_AGENT'];
$regex = '/(iPhone|Android)/';
$is_smartphone = preg_match($regex, $ua);
if (! $is_smartphone) return;
$r = sfContext::getInstance()->getResponse();
$stylesheets = $r->getStylesheets();
foreach ($stylesheets as $file => $opt) {
$r->removeStylesheet($file);
$r->addStylesheet($file . $suffix, '', $opt);
}
$javascripts = $r->getJavascripts();
foreach ($javascripts as $file => $opt) {
$r->removeJavascript($file);
$r->addJavascript($file . $suffix, '', $opt);
}
}
ヘッダ部のあるテンプレートに下記を追加
use_helper('Smartphone') ?>
smartphone_header_scripts() ?>