jquery.yiiactiveform.jsはcoreScriptとして登録されているため、その位置を変更するには、その位置をオーバーライドする必要があります。デフォルトでは<HEAD>
。です。位置をオーバーライドするには、(特定のビューで)次のようcoreScriptPosition
にCClientScriptのプロパティを使用できます。
Yii::app()->clientScript->coreScriptPosition=CClientScript::POS_END;
ボディタグの最後の位置に変更しました。
ただし、これはすべてのビュー、つまりアプリ全体に対して実行する必要があるため、アプリの構成中に位置を上書きできます。そのためには、アプリによってロードされる構成配列を変更する必要があります。通常、この配列はファイルprotected / config/main.phpで指定されます。clientScript
次のように、アプリのコンポーネント構成を変更する必要があります。
return array(
// other properties
'components'=>array(
// other components' configurations
'clientScript'=>array(
'coreScriptPosition'=>CClientScript::POS_END
)
)
);
同様に、プロパティregisterScriptFile()
を使用して、スクリプトファイルとして登録されたスクリプトに変更を加えることができます。defaultScriptFilePosition
次に、で登録されたスクリプトの場合は、プロパティregisterScript()
を使用します。defaultScriptPosition
これらのプロパティは、CActiveFormなどのウィジェットによって登録されたスクリプトの位置を指定する場合、およびもちろん、独自のスクリプト(registerScript*
関数の1つに登録されている場合)の位置を指定する場合に特に便利です。
(関数の1つを使用して)ファイル/スクリプトを自分で指定した場合は、registerScript*
関数の呼び出し中に位置を設定することもできます。
ウィジェットの位置を変更するときは、必ず徹底的にテストしてください。たとえば、CActiveFormにはjQuery.ready
関数に登録されている小さなスクリプトがいくつかあります。またjQuery(function($) { ...
、defaultScriptPositionをPOS_ENDに指定すると、これらのスクリプトはready()
関数から移動されます。
ビューごとにこれらのプロパティを再度変更できます。
Yii::app()->clientScript->defaultScriptPosition=CClientScript::POS_END;
Yii::app()->clientScript->defaultScriptFilePosition=CClientScript::POS_END;
またはシステム全体:
return array(
// other properties
'components'=>array(
// other components' configurations
'clientScript'=>array(
'coreScriptPosition'=>CClientScript::POS_END,
'defaultScriptPosition'=>CClientScript::POS_END,
'defaultScriptFilePosition'=>CClientScript::POS_END
)
)
);
ビューにタグ付きのスクリプトを含めた場合<script></script>
、その位置を簡単に制御することはできないと思います。これらのスクリプトを(可能であれば)レイアウトファイルに移動する必要があります(常に機能するとは限りません)。 -多くの異なるケース)。最良のオプションは、を使用する代わりにregisterScriptFile
、または関数に切り替えることです。registerScript
<script>