ユーザースクリプトをグローバルに登録して、サイト全体で利用できるようにしたいと思います。これで、コントローラーのすべてのアクションに挿入します。
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/script.js');
しかし、本当に私はそれが良い方法ではないことを理解しています...
ユーザースクリプトをグローバルに登録して、サイト全体で利用できるようにしたいと思います。これで、コントローラーのすべてのアクションに挿入します。
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/script.js');
しかし、本当に私はそれが良い方法ではないことを理解しています...
プロジェクトでテーマを使用することを楽しみにしている場合は、いくつかのcssとスクリプトをレイアウトファイル(views / layouts / my-layout-file.php)に配置します。テーマを変更する場合は、別のcssを使用し、場合によっては別のスクリプトを使用するため、一緒に使用したくないためです。
しかし、テーマ間で変更されなかったいくつかのメインのcssとsciptsは、メインのコントローラー(protected / components / Controller.php)に入れ、他のすべてのコントローラー(/ protected / controllers /)はこのクラスのコントローラーを拡張します
class PageController extends Controller {
したがって、すべてのコントローラーが親クラスで使用している場合は、親クラスだけを編集して、次のようなものを追加できます。
public function beforeRender( $view ) {
...
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/script.js');
...
return true;
}
そして、すべてのアクションが同じスクリプトを使用するようになります。
編集:@realtebo(コメント内)は、'beforeRender'ではなく' beforeRender 'を使用することを指摘しました。
この方法でこれを行うことができます: パス protected/components/controller.php を持つ基本コントローラー クラスで init 関数を開始します。
public function init()
{
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/script.js');
parent::init();
}
グローバルな js および css ファイルを登録する最良の方法は、一部の BaseController の beforeRender() メソッド (beforeAction() ではなく - json または xml をレンダリングすると構造が破壊される可能性があるため) に登録することだと思います。
Uは次のように実行できます。1。プライベート属性$_assetsUrlを作成します。2.次に、モジュールまたはコントローラーで
public function getAssetsUrl()
{
if ($this->_assetsUrl===null)
{
$assetsPath = $this->basePath.DIRECTORY_SEPARATOR.'assets';
$this->_assetsUrl = Yii::app()->assetManager->publish($assetsPath,false,-1,YII_DEBUG);
if (Yii::app()->theme!==null && is_dir($assetsPath.DIRECTORY_SEPARATOR.Yii::app()->theme->name))
$this->_assetsUrl .= DIRECTORY_SEPARATOR.Yii::app()->theme->name;
}
return $this->_assetsUrl;
}
これがお役に立てば幸いです。このリンクも参照してくださいhttp://www.yiiframework.com/wiki/148/understanding-assets/