2015-03-01 22 views
5

Sto cercando di impostare un alias in Yii2 ma sto ottenendo un Invalid Parameter/Invalid path alias per il codice qui sotto che viene inserito nel file di configurazione app:Impostazione alias nel Yii2 all'interno del file di configurazione app

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

Se Rimuovere il @ funziona.

ho notato che si può fare questo:

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

... ma io preferirei impostarlo all'interno del file di configurazione app. Non è possibile? Se é cosi, come?

+10

La questione è in discussione su [meta] (http://meta.stackoverflow.com/questions/287174/user-constant-adds-wrong-tag) – rene

risposta

6

Nella cartella config creare il file aliases.php. E mettere questo:

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

nella cartella web in index.php file di put: require(__DIR__ . '/../config/aliases.php');

Prima:

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

Se gestita echo nel file di visualizzazione:

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

spettacolo come questo:

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

+0

Grazie. aggiungendo il comando 'require (__ DIR__. '/../ config/aliases.php');' a index.php mi ha aiutato .. –

11

Yii2 domanda di base

Per impostare file di configurazione all'interno, scrivere questo all'interno di array $ config

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

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

Ma, come accennato here,

L'alias @yii è definito quando includi il file Yii.php nello script di immissione. Il resto degli alias viene definito nel costruttore dell'applicazione quando si applica la configurazione dell'applicazione.

Se è necessario utilizzare alias predefinito, scrivere un componente e collegarlo in config gamma di bootstrap

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/'); 
    } 
} 

e dentro file di configurazione, aggiungere 'app \ componenti \ alias' per l'avvio gamma

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

Per migliorare sulla risposta di @ vitalik_74

puoi invece posizionarlo in config/web.php (se stai usando l'app di base yii, non sono sicuro del file di configurazione principale in Versione dvance, ma lo stesso vale, appena messo il richiedono il file di configurazione principale) in modo che venga accorciare a:

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

Preferisco questa risposta, specialmente quando si prende in considerazione il nuovo ambiente/script init di yii. –

Problemi correlati