Yii2 - 获取没有参数的应用程序URL

时间:2015-07-12 20:05:12

标签: php yii yii2

我不知道如何在Yii2中获取我的应用程序Web文件夹的完整URL。 以下规则:

    <?php
    $page = $_GET['page'];
    // You ***MUST*** sanitize $page here **
    $conn = new \PDO(
      'mysql:host=127.0.0.1;dbname=database_name;charset=utf8mb4',
      $username, $password);
    $stmt = $conn->query('select Title from websites limit 12 offset ' . (($page - 1) * 12));
    ?>
    <ul>
    <?php while(($row = $stmt->fetch(\PDO::FETCH_OBJ)) !== null): ?>
      <li><?= htmlspecialchars($row->Title) ?></li>
    <?php endwhile; ?>
    </ul>

返回:

<?=Yii::$app->getUrlManager()->getBaseUrl();?><br>
<?=Yii::$app->homeUrl;?><br>
<?=Yii::$app->getHomeUrl();?><br>
<?=Yii::$app->request->url;?><br>
<?=Yii::$app->request->absoluteUrl;?><br>
<?=Yii::$app->request->baseUrl;?><br>
<?=Yii::$app->request->scriptUrl;?><br>
<?=Url::to();?><br>
<?=Url::to(['site/index']);?><br>
<?=Url::base();?><br>
<?=Url::home();?><br>
<?=Yii::$app->getUrlManager()->getBaseUrl();?><br>

当我需要得到(absoluteUrl是最接近的一个)时:

/yiiapp/web
/yiiapp/web/
/yiiapp/web/
/yiiapp/web/en/reset-password-request
http://website.com/yiiapp/web/en/reset-password-request
/yiiapp/web
/yiiapp/web/index.php
/yiiapp/web/en/reset-password-request
/yiiapp/web/site/index
/yiiapp/web
/yiiapp/web/
/yiiapp/web

我可能将其中一个结果与一些$ _SERVER var结合起来......但这是一个解决方案吗?

3 个答案:

答案 0 :(得分:1)

您可以使用Yii::$app->getUrlManager()->createAbsoluteUrl()方法或yii\helpers\Url::toRoute()生成绝对网址。 yii\helpers\Url::to()也可以用来查看文档。例如。 <?=Url::to(['site/index'], true);?>应输出 http://website.com/yiiapp/web/site/index 。如果您需要获取应用的根网址,请尝试\yii\helpers\Url::to('/', true);

答案 1 :(得分:1)

我意识到这篇文章已经很老了,但无论如何我想回答它。 要在Yii2中获取应用程序Web文件夹的完整URL,您可以尝试以下三个选项:

  1. Url::to('@web/', '');返回//website.com/yiiapp/web/
  2. Url::to('@web/', true);返回http://website.com/yiiapp/web/
  3. Url::to('@web/', 'https');返回https://website.com/yiiapp/web/

答案 2 :(得分:0)

有多种方法可以实现这一目标,但获取应用基本网址的最简洁方法可能是使用Url::base()

Url::base(true);

Url helper中的大多数方法允许您指定$scheme参数 - 如果要创建绝对URL(使用域),则应使用它。

  

要在返回的基本URL中使用的URI方案:

     
      
  • false (默认值):返回没有主机信息的基本网址。
  •   
  • true :返回一个绝对基本网址,其方案与yii \ web \ UrlManager :: $ hostInfo中的方案相同。
  •   
  • 字符串:返回具有指定方案的绝对基本网址(httphttps或空字符串,用于协议相对网址。)
  •