6

私はYiiアプリケーションに取り組んでいます。私は次のようにメインの設定パラメータにいくつかのパスを設定しようとしています:

// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>array(
       'paths' => array(
            'imageTemp'=> Yii::getPathOfAlias('webroot').'/files/temp-',
            'image'=> Yii::getPathOfAlias('webroot').'/files/',
            ...
        ),

        'urls' => array(
            'imageTemp'=> Yii::app()->getBaseUrl().'/files/temp-',
            'image'=> Yii::app()->getBaseUrl().'/files/',
            ...
        ),

しかし、私はこのエラーを受け取ります:

Fatal error: Call to a member function getBaseUrl() on a non-object in ..blahblah../base/CApplication.php on line 553

ここではアプリがまだ初期化されていないため、設定ファイルでYii :: app()を使用できないと思います。Yii::app()->getBaseUrl()では、どうすれば設定ファイルを置き換えて同じ結果を得ることができますか?

4

1 に答える 1

6

そうです、構成の戻り配列内で Yii::app() メソッドを使用することはできませんが、Yii::getPathOfAlias()外部で使用することはできます。このようなものがうまくいくかもしれません:

$webroot = Yii::getPathOfAlias('webroot');
return array(
    ...
    'params'=>array(
        'paths' => array(
            'imageTemp'=> $webroot.'/files/temp-',
            'image'=> $webroot.'/files/',
            ...
        ),
    ),
);

仮定webrootは事前に定義されています。

baseUrl については... それについてはまたお知らせします。

[戻る...]

URL が必要な場合は、画像ファイルが保存されている場所、yii パスからの相対位置、または Web ルートのベースからの相対位置にすべて依存します。

Web ルートのベースの場合は、次を使用できます。

return array(
    ...
    'urls'=>array(
        'paths' => array(
            'imageTemp'=> '/files/temp-',
            'image'=> '/files/',
            ...
        ),
    ),
);
于 2012-11-07T12:04:54.277 に答える