2016-06-23 3 views
4

私はmainLayoutAsset.php内のコードを以下の今、私はmainLayoutAsset.phpファイルにパラメータを渡すには?

例えば、このファイルにでのparamsファイルパラメータにアクセスしたい

<?php 
/** 
* @link http://www.yiiframework.com/ 
* @copyright Copyright (c) 2008 Yii Software LLC 
* @license http://www.yiiframework.com/license/ 
*/ 

namespace frontend\assets; 
use yii\web\AssetBundle; 

/** 
* @author Qiang Xue <[email protected]> 
* @since 2.0 
*/ 
class MainLayoutAsset extends AssetBundle 
{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
    ]; 
    public $js = [ 
     'member-area/AdminLTE/app.js', 
    ]; 
} 

を提出しています。

public $js = [ 
     'member-area/AdminLTE/app.js?v='.Yii::$app->params["version"], 
    ] 

が、それは、クラスのプロパティについてPHPのドキュメントからのエラーに

PHP Parse Error – yii\base\ErrorException 
syntax error, unexpected '.', expecting ']' 

'js/tooltip.js?v='.Yii::$app->params["incFileVersion"], 
+0

'表現はフィールドのデフォルト値として許可されていません。 '...なぜAssetManagerクラスの' appendTimestamp'を使わないのですか? –

+0

毎回値を変更するのでタイムスタンプを使いたくありません。私が望むのは、自分のJSファイルを変更するときです。私はちょうど新しいjqueryが含まれ、キャッシュされていないようにバージョンを変更する必要があります! –

答えて

7

を与える:彼らは、キーワード公共のいずれかを使用して定義された保護、またはプライベート、が続いている

通常の変数宣言。この宣言には初期化が含まれる場合がありますが、この初期化は定数値でなければなりません。つまり、コンパイル時に評価できる必要があり、評価するためにランタイム情報に依存してはいけません。

http://php.net/manual/en/language.oop5.properties.php

あなたは、単にinit()をオーバーライドすることができます:

public function init() 
{ 
    parent::init(); 
    $this->js = [ 
     'member-area/AdminLTE/app.js?v=' . Yii::$app->params['version'], 
    ]; 
} 

そして、あなたが代わりにtry thisかもしれなければなりません。

+0

ありがとう..それは働いた! –

関連する問題