首页 文章

如何在Yii Framework中设置基本URL

提问于
浏览
8

当我做

print_r(Yii::app()->request->baseUrl)

我得到一个空字符串 . Yii论坛上的帖子说this is blank by default . 如何更改其默认值以便我可以使用绝对URL?

7 回答

  • 12

    正如该论坛中的帖子所说,对于不同的平台,或者如果Web应用程序不在默认文件夹中,它可能会有所不同 .
    所有这些都适合我:

    echo Yii::app()->request->baseUrl."
    " ; print_r(Yii::app()->request->baseUrl); echo "
    "; var_dump(Yii::app()->getBaseUrl(true)); echo "
    "; echo Yii::app()->request->getBaseUrl(true);

    我使用yiic创建了Web应用程序,使用终端中的以下命令进行默认设置, yiic webapp /path/to/webapp
    这样就可以为Web应用程序以及默认的框架文件生成必要的目录结构 . 尝试一下,看看它是如何工作的 . 我是yii自己的新手 .

    Edit:

    此解决方案可能适用于op,但是可以设置baseUrl的正确方法由ecco's answer to this question显示 .

  • 0

    您可以编辑/path/to/application/protected/config/main.php来更改默认值 . 添加请求组件,并配置baseUrl属性 .

    return array(
        ...
        'components' => array(
            ...
            'request' => array(
                'baseUrl' => 'http://www.example.com',
            ),
        ),
    );
    
  • 31

    它很可能是空白的,因为您的引导文件(index.php)位于您的Web根目录 . 如果不是,你应该看到一些 Value . 改变它会破坏它的目的 .

    你会用到:

    href="<?php echo 'http://www.myhost.com' . Yii::app()->request->baseUrl; ?>/css/screen.css"
    

    对于大多数情况下,这不会改变路径,但如果你这样做,那么决定将你的Yii应用程序放在子目录中,那么它就是可移植的 . (只需删除上面的http方法和主机名,使其在用户所在的同一主机上运行 . )

  • 1

    Yii :: app() - > baseUrl只返回从url到index.php的相对路径,例如:127.0.0.1/index.php返回''127.0.0.1/yii/index.php返回'/ yii'

  • 0

    如果您使用Url帮助程序生成网址,则需要将baseUrl密钥设置为UrlManager组件

    'urlManager' => [       
            'baseUrl' => 'http://example.com',
    

    然后你可以使用Url helper创建绝对url,

    echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name'], true); // output ===> http://example.com/index.php?r=site%2Findex&src=ref1#name

  • 3

    试试 echo Yii::$app->baseUrl(true)
    请注意,真正的参数是需要什么 .

  • 0

    使用Yii 2.0.13.1 以下代码工作正常

    <?php echo Yii::$app->request->baseUrl; ?>
    

相关问题