質問: Bootstrap のタブナビゲーションで(というかよくあるjavascript制御のタブ表示)で別ページから表示したいタブの情報を渡すことは出来ないでしょうか? ちょっと説明が下手かもしれなくて大変恐縮なのですが、 本来タブを選択して表示を切り替えるページに、前のページからタブのIDか何かを渡して最初から前のページで選択した条件に当てはまるタブに表示を切り替えたい という質問なのですが、伝わりますでしょうか。 1ページ目 ボタンがいくつか並んでいる選択ページ ここで情報を選択 A.htmlファイル ``` 「あ」を見る 「い」を見る 「う」を見る ``` 2ページ目 タブで表示を切り替える情報ページ Aで選択した情報を初期表示させたい B.htmlファイル ``` あ い う Tab1 Content Tab2 Content Tab3 Content ``` ちなみに使っているのはブートストラップのタブナビゲーションです。 私の知識ですと B.htmlのタブはclass="activ"を付けると初期表示されるのでphpでAからBへ情報渡して、B.htmlの とに全部ifを書く、といった方法しか思いつけません。 こんなしょぼくて面倒なやり方ではなくもうちょっとスマートなやり方があると思うのですが、ご存知の方いらしゃいましたらお願いいたします。 下記が私の知識の限界の解決策です。 A.html ``` 「あ」を見る 「い」を見る 「う」を見る ``` B.htmlファイル ``` >あ >い >う Tab1 Content Tab2 Content Tab3 Content ```
回答: > > スマートなやり方があると思うのですが > > > テンプレートエンジンくらいしか思いつかないですね。 【[W] PHPテンプレートエンジンまとめ 一覧と構文例 | Work Tool Smith [ワークツールスミス]】 http://worktoolsmith.com/2012/02/phpテンプレートエンジンまとめ-一覧と構文例/ 【2015年版PHPのテンプレートエンジン調査 | IT起業アカデミア】 http://web-academia.org/it_business_web_development/プログラミング/1199/ `li` の数が多かったり変数の数が多い場合は `sprintf` を使うと思います。 ``` $lis = array( 'tab1' => 'あ' , 'tab2' => 'い' , 'tab3' => 'う' ); foreach ( $lis as $tab => $val ) { $html .= sprintf( '%3$s%4$s' , /* %1$s */ ( isset( $_GET[ $tab ] ) ) ? ' class="active"' : '' , /* %2$s */ $tab , /* %3$s */ $val , /* %4$s */ "\n" ); } if ( empty( $html ) ) { printf( '%2$s%1$s%2$s', $html, "\n" ); }; ``` 【PHP: sprintf - Manual】