0

そのため、yii プロジェクトで作業しているこの特定のウィジェットの外部にある他のスクリプトのボート ロードをロードすることができます。ウィジェットでも、登録してロードする外部スクリプトを取得できます。ただし、ウィジェットのアセットフォルダーにあるスクリプトを登録しようとすると、(var_dump(Yii::app()->clientScript)呼び出しで見られるように) うまく登録されますが、ブラウザーには読み込まれません。ブラウザを再起動しましたが、解決しませんでした。出力は次のvar_dump(Yii::app()->clientScript)とおりです。

object(CClientScript)[10]
  public 'enableJavaScript' => boolean true
  public 'scriptMap' => 
    array (size=0)
      empty
  public 'packages' => 
        array (size=0)
          empty
  public 'corePackages' => null
  public 'scripts' => 
    array (size=1)
      0 => 
        array (size=2)
          'jwplayer-licence-key' => string 'jwplayer.key = "8xU8+r4etXrBAwrr4Rzyq8niCsNZYC01/6XuUw==";' (length=58)
          'jFileUploaderVars' => string 'var collegeId = 135717; var criteriaId = 0; var cameraMarkup = "<camera id="kdgtestcam" data-uuid="f89aee90-f319-0130-b0ac-12313940240c" data-videobitrate="131072" />";' (length=168)
  protected 'cssFiles' => 
    array (size=2)
      '/ednet/css/bootstrap.min.css' => string '' (length=0)
      '/ednet/css/font-awesome/css/font-awesome.min.css' => string '' (length=0)
  protected 'scriptFiles' => 
    array (size=2)
      0 => 
        array (size=4)
          '/ednet/js/jquery-2.0.3.min.js' => string '/ednet/js/jquery-2.0.3.min.js' (length=29)
      '/ednet/js/jwplayer/jwplayer.js' => string '/ednet/js/jwplayer/jwplayer.js' (length=30)
          '/ednet/assets/6adc18e6/jfileuploader.js' => string '/ednet/assets/6adc18e6/jfileuploader.js' (length=39)
          '//cameratag.com/1.8/cameratag.js' => string '//cameratag.com/1.8/cameratag.js' (length=32)
      2 => 
        array (size=2)
          '/ednet/js/bootstrap.min.js' => string '/ednet/js/bootstrap.min.js' (length=26)
          '/ednet/js/profileDisplay.js' => string '/ednet/js/profileDisplay.js' (length=27)
  protected 'metaTags' => 
    array (size=0)
      empty
  protected 'linkTags' => 
    array (size=0)
      empty
  protected 'css' => 
    array (size=0)
      empty
  protected 'hasScripts' => boolean true
  protected 'coreScripts' => 
    array (size=0)
      empty
  public 'coreScriptPosition' => int 0
  public 'defaultScriptFilePosition' => int 0
  public 'defaultScriptPosition' => int 4
  private '_baseUrl' => null
  public 'behaviors' => 
    array (size=0)
      empty
  private '_initialized' (CApplicationComponent) => boolean true
  private '_e' (CComponent) => null
  private '_m' (CComponent) => null

ここに私のコードがあります: WIDGET:

class JFileUploader extends CWidget {

    public $fileTypes;
    public $controller;
    public $model;
    public $criteria;

     public function run() {
       $this->registerClientScripts();
       echo $this->render('_jfileuploader', array('model' => $this->model, 'criteria' => $this->criteria, 'controller' => $this->controller, 'fileTypes' => $this->fileTypes), true);
     }

    public function registerClientScripts() {
      $assets = dirname(__FILE__) . '/assets';
      $baseUrl = Yii::app()->assetManager->publish($assets);
      $cs = Yii::app()->getClientScript();
      $cs->registerScript('jFileUploaderVars', 'var collegeId = ' . $this->criteria['college_id'] . '; var criteriaId = ' . $this->criteria['criteria_id'] . '; var cameraMarkup = "' . CHtml::tag('camera', array('id' => Yii::app()->params['cameraTag-camera'], 'data-uuid' => Yii::app()->params['cameraTag-uuid'], 'data-videobitrate' => 131072)) . '";', CClientScript::POS_HEAD);
      $cs->registerScriptFile($baseUrl . '/jfileuploader.js', CClientScript::POS_HEAD);
      $cs->registerScriptFile('//cameratag.com/1.8/cameratag.js', CClientScript::POS_HEAD);
    }
  }

ウィジェットが表示されるのと同じように表示されます。作業できないのは、ブラウザにロードするjfileuploader.jsファイルとjFileUploaderVarsスクリプトだけです。ロードされる外部スクリプトは、メソッドNote:の最後の行です。registerClientScripts()上の 2 つはそうではありません。どんな助けでも大歓迎です!

4

1 に答える 1