yii2 - Yii2 使用 UrlManager::createUrl() 将语言添加到 URL
问题描述
我正在尝试使用类的方法来添加语言,例如en
或bg
类似。www.domain.com/language/
createUrl()
UrlManager
我只是为了测试而尝试的是:
<?php
namespace frontend\components;
class UrlManager extends \yii\web\UrlManager
{
public function createUrl($params)
{
$url = parent::createUrl($params);
return "/en{$url}";
}
}
我在我的课程中添加了urlManager
:
'urlManager' => [
'class' => 'frontend\components\UrlManager',
...
],
从这个我预料到www.domain.com/en
但语言缺失。也许我误解了createUrl
方法。实现这一目标的正确方法是什么?
解决方案
您将 附加/en
到从parent::createUrl()
. 它会向您显示/enhttp://example.com/controller/action
,您想要的是在域名之后附加,然后附加 URL 的其余部分,因此您需要explode()
在所需位置URL
插入所需的块en
,您可以使用array_splice()
.
只是为了更正,您可以使用以下内容
<?php
namespace frontend\components;
class UrlManager extends \yii\web\UrlManager
{
public function createUrl($params)
{
$url = parent::createUrl($params);
$chunks=explode('/', $url);
array_splice($chunks,3,0,"en");
return implode('/',$chunks);
}
}
现在当你打电话给
Yii::$app->urlManager->createUrl(['/controller/action']);
它会产生
http://example.com/en/controller/action
推荐阅读
- python - 跨类的不同方法管理 python OpenCV 窗口
- python - 对于非常大的数字,math.log10() 似乎有效,但 math.log() 似乎无效,为什么会这样?
- c - 不能将非常小的浮点数加在一起吗?C
- javascript - 同时从 iframe 中的表单更新数据
- mysql - 如何在 MySQL 数据库的 select 子查询中选择多个列?
- java - 如何使用 Mybatis 将 Addresses 类与 EmployeeMap 中的地址列表映射?
- python - Pandas groupby 并保留另一列的值
- python - 小数浮点 to_datetime
- python - Bokeh VBar Dodge 基于循环
- javascript - Firestore SDK 无法模拟 DocumentSnapshot