2015-03-01 13 views
5

Próbuję ustawić alias w Yii2 ale Dostaję Invalid Parameter/Invalid path alias dla poniżej kod, który jest umieszczony w pliku konfiguracyjnym aplikacji:Ustawianie aliasów w Yii2 w pliku konfiguracyjnym aplikacji

'aliases' => [ 
    // Set the editor language dir 
    '@editor_lang_dir' => '@webroot/scripts/sceditor/languages/',  
], 

Jeśli Usuwam @ to działa.

Zauważyłem, można to zrobić:

Yii::setAlias('@foobar', '@foo/bar'); 

... ale wolałbym, aby ustawić go w pliku konfiguracyjnym aplikacji. Czy to nie jest możliwe? Jeśli tak to jak?

+10

Ta kwestia jest przedmiotem dyskusji na [meta] (http://meta.stackoverflow.com/questions/287174/user-constantly-adds-wrong-tag) – rene

Odpowiedz

6

W folderze config utwórz plik aliases.php. I umieścić to:

Yii::setAlias('webroot', dirname(dirname(__DIR__)) . '/web'); 
Yii::setAlias('editor_lang_dir', '@webroot/scripts/sceditor/languages/'); 

W web folderu index.php plików put: require(__DIR__ . '/../config/aliases.php');

Przed:

(new yii\web\Application($config))->run();

Jeśli uruchomić echo w widoku pliku:

echo Yii::getAlias('@editor_lang_dir');

trasę tak:

C:\OpenServer\domains\yii2_basic/web/scripts/sceditor/languages/

+0

Dzięki. dodanie 'require (__ DIR__. '/../ config/aliases.php');' to index.php pomógł mi .. –

11

Yii2 podstawowa aplikacja

Aby ustawić wewnątrz pliku konfiguracyjnego, napisać wewnątrz tablicy $ config

'aliases' => [ 
     '@name1' => 'path/to/path1', 
     '@name2' => 'path/to/path2', 
    ], 

Ref: http://www.yiiframework.com/doc-2.0/guide-structure-applications.html

Ale jak wspomniano here,

@yii alias jest zdefiniowana po dołączeniu pliku Yii.php do skryptu wprowadzania. Pozostałe aliasy są zdefiniowane w konstruktorze aplikacji podczas stosowania konfiguracji aplikacji.

Jeśli trzeba użyć zdefiniowanego aliasu, napisać jeden składnik i połączyć je w konfiguracji bootstrap tablicy

namespace app\components; 


use Yii; 
use yii\base\Component; 


class Aliases extends Component 
{ 
    public function init() 
    { 
     Yii::setAlias('@editor_lang_dir', Yii::getAlias('@webroot').'/scripts/sceditor/languages/'); 
    } 
} 

i wewnątrz pliku konfiguracyjnego, dodaj „aplikacji \ komponenty \ Pseudonimy” bootstrap tablicę

'bootstrap' => [ 
     'log',   
     'app\components\Aliases',   
], 
1

Aby poprawić odpowiedź @ vitalik_74

można umieścić go w config/web.php zamiast (jeśli używasz podstawowej aplikacji yii, nie jestem pewien co do głównego pliku konfiguracyjnego w Wersja dvance, ale to samo dotyczy, po prostu umieścić wymagają na głównym pliku konfiguracyjnym), tak że robi się skrócić do:

require(__DIR__ . '/aliases.php'); 
+0

Preferuję tę odpowiedź, szczególnie jeśli uwzględnimy nowe środowisko/skrypt inicjujący yii. –

Powiązane problemy