0

「/js/someFile.js」のような URL からアクセスする JavaScript ファイルがあります。しかし、リクエストされたときに Yii に javascript ファイルをレンダリングしてもらいたいので、データベース テーブルから解析されたリストなどの関連データを含めることができます。

解決策の 1 つは、単純にファイルを静的にして、初期化時にサーバーからデータを要求することだと理解していますが、これを行わないことを望んでいました。

JS を現在のビューにインライン化せずにこれを達成する方法を知っている人はいますか? または、これがひどい考えである理由は何ですか?

4

2 に答える 2

1

Twisted1919 が示したように、ビューをレンダリングできます。しかし、Yii を介して JavaScript をレンダリングするのは良い考えではないと思います。あなたの質問は、javascript ファイルがほとんど静的であることをすでに示しています。したがって、Webサーバーがはるかに高速にサービスを提供できるように、静的ファイルとして扱います。また、このファイルをクライアント側でキャッシュする方が簡単です。

次に、あなたが提案したように、動的部分をパラメーターとしてJavaScriptに渡すだけでよい方法で記述してみてください。ただし、暗示されているように、サーバーからそのデータを要求する必要はありません。構成をページにインラインで追加できます。

<?php
$data = json_encode(array(
    'userId'    => Yii::app()->user->id,
    'whatever'  => $someThing,
));
Yii::app()->clientScript->registerScriptFile('my.js');
Yii::app()->clientScript->registerScript(
    'initJs',
    "myJs.init($data)", 
    CClientScript::POS_READY
);
?>
于 2013-04-22T07:36:40.230 に答える