我正在尝试在alias
中设置Yii2
,但我在下面的代码中找到Invalid Parameter / Invalid path alias
,该代码位于应用配置文件中:
'aliases' => [
// Set the editor language dir
'@editor_lang_dir' => '@webroot/scripts/sceditor/languages/',
],
如果我删除@
,则可以使用。
我注意到你可以这样做:
Yii::setAlias('@foobar', '@foo/bar');
...但我更愿意在app配置文件中设置它。这不可能吗?如果是这样,怎么样?
答案 0 :(得分:12)
Yii2基本申请
要设置内部配置文件,请在$ config array
中写入'aliases' => [
'@name1' => 'path/to/path1',
'@name2' => 'path/to/path2',
],
参考:http://www.yiiframework.com/doc-2.0/guide-structure-applications.html
但如上所述here,
在您的条目脚本中包含Yii.php文件时,会定义@yii别名。应用应用程序配置时,其余的别名在应用程序构造函数中定义。
如果您需要使用预定义的别名,请编写一个组件并将其链接到config bootstrap array
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/');
}
}
并在配置文件中,将'app \ components \ Aliases'添加到bootstrap数组
'bootstrap' => [
'log',
'app\components\Aliases',
],
答案 1 :(得分:7)
在config
文件夹中创建文件aliases.php
。并把它:
Yii::setAlias('webroot', dirname(dirname(__DIR__)) . '/web');
Yii::setAlias('editor_lang_dir', '@webroot/scripts/sceditor/languages/');
在web
文件中的index.php
文件夹中:
require(__DIR__ . '/../config/aliases.php');
在:
(new yii\web\Application($config))->run();
如果在视图文件中运行echo
:
echo Yii::getAlias('@editor_lang_dir');
显示如下:
C:\OpenServer\domains\yii2_basic/web/scripts/sceditor/languages/
答案 2 :(得分:2)
@webroot
别名不可用,它是在应用程序引导期间定义的:
https://github.com/yiisoft/yii2/blob/2.0.3/framework/web/Application.php#L60
无需自己定义此别名,您只需使用另一个别名:
'aliases' => [
// Set the editor language dir
'@editor_lang_dir' => '@app/web/scripts/sceditor/languages/',
],
答案 3 :(得分:1)
改进@ vitalik_74的回答
你可以把它放在config / web.php中(如果你使用的是基本的yii应用程序,我不确定高级版本中的主配置文件,但同样适用,只需要求在主配置文件上),以便缩短为:
require(__DIR__ . '/aliases.php');