2012-04-13 7 views
0

コアスクリプトが既に登録されているかどうかを確認する方法はありますか?例えばYii ClientScript

yiiactiveformこのcorescriptがすでに登録されているかどうかを確認する方法

Yii::app()->clientScript->registerCoreScript('yiiactiveform');

? ありがとう

答えて

2

なぜこれを知る必要がありますか?このフレームワークは、同じスクリプトを2度登録しないほどスマートです。

あなたが

if(Yii::app()->clientScript->getPackageBaseUrl('yiiactiveform') === false) { 
    // core script 'yiiactiveform' has not been registered yet 
} 

を使用するか、CClientScriptを拡張し、これに答えるための機能を実装し、それはやり過ぎかもしれないことを私には思えます。

+0

私はjquery ajaxを使用しているため、URLをロードしているので、私はそれをコピーしません。だから、私はcorescriptが既に登録されているかどうかを確認する必要があります。 Yii :: app() - > clientScript-> scriptMap(); 回答ありがとうございます。 – butching

0

コンテンツを読み込んでいるときに、レンダリングではなくrenderPartial()を使用する方がよいでしょう。これはヘッドをレンダリングしないため、登録済みのコアを含めることができますスクリプト。それはオプションですか?

+0

はい私はrenderPartialを使用しています。これはajaxrequestとrenderPartialでコンテンツを読み込んでいるため、renderPartial内のjqueryが返ってきますが、現在のページにはすでにrenderPartialでjqueryが生成されています。たとえば、私はイベントのalert()とajaxLinkを持っています。それは2回警告します。 – butching

+0

ajaxクエリはjQueryで作成されていませんか?あなたがAjaxリクエストを作成した場合、jQueryが既にロードされていると仮定するのは安全ではありませんか?したがって、Yii :: app() - > request-> isAjaxRequest – Paystey

+0

コントローラの私のinit関数で、すでにcoreScript ** jquery.js **を宣言してから、別のページに移動するためにajaxRequestを使用したrenderPartial w/ProcessOutput Trueで、これをtrueに設定すると、jquery.jsもcozと呼ばれます。このコードを使用することを避けるため、renderPartial内にjqueryscriptがあります。 '(Yii :: app() - > clientScript-> getPackageBaseUrl ( 'jquery')=== false) 'を実行してcoreScriptがすでに存在するかどうかを確認します。しかし、まだ私は/ wii/** yiiactiveform **のようなrenderPartialの後に登録されているいくつかのcoesccriptで問題を抱えているそれは常にfalseを使用してすでに使用されているかどうか – butching