Yii Framework を使用して Web アプリケーションを開発しています。まず、javascript と css ファイルをハードコーディングすることから始めました (最善の方法ではないかもしれませんが、別のアプリケーションでこの方法を使用しています)。
私はこのようなことを達成しようとしています:
<html><head>
....
(css includes)
<script type="text/javascript" src="http://www.myapp.com/js/vendor/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
jQuery(function($) {
if (typeof(myapp) == "undefined") { var myapp = {}; }
var myapp = {
ui : {},
var: {}
};
myapp.var = {
baseurl: '<?php Yii::app()->getBaseUrl()'
};
});
</script>
<script type="text/javascript" src="http://www.myapp.com/js/myapp.dialog.js"></script>
<script type="text/javascript" src="http://www.myapp.com/js/myapp.customjqgrid.js"></script>
そこで、config/main.php に 2 つのパッケージを作成しました。 jquery (最初のスクリプト) を含むパッケージ「jquery」 共通ファイル (myapp.dialog.js および myapp.customjqgrid.js) を含むパッケージ「commonjs」
ただし、myapp.dialog.js と myapp.customjagrid.js はどちらも変数「myapp.var.baseurl」を使用します。したがって、インクルードの順序は次のようにする必要があります。
package jquery
inline jquery
package commonjs.
レイアウトの私のPHPは次のようなものです:
<?php
Yii::app()->clientScript->registerPackage('jquery');
Yii::app()->clientScript->registerScript('helpers', "
if (typeof(myapp) == 'undefined') { var myapp = {}; }
var myapp = {
ui : {},
var: {}
};
myapp.var = {
baseurl = '".Yii::app()->getBaseUrl()."/'
};
", CClientScript::POS_READY);
Yii::app()->clientScript->registerPackage('commonjs');
?>
問題は、registerPackage に対する registerScript の位置を定義できないこと、または registerScript と registerPackage の間の依存関係を定義できないことです。パッケージ間の依存関係を定義できることはわかっていますが、PHP 変数を JS に渡すにはどうすればよいでしょうか?
これを行う簡単な方法はありますか、それとも JS と CSS を手動でインクルードし続ける方が良いですか?
ありがとうございました。