我正在使用 yii2-localeurls在 Yii2 中与语言环境相处。一切都很好。通过阅读文档,您会看到,重定向到配置的语言或默认语言会自动发生(即使 enableLanguageDetection
是 false
)。我创建了一个 ticket@github以确保此功能即将推出。
这是我的罚款 main.php
配置:
'urlManager' => [
'class' => 'codemix\localeurls\UrlManager',
'languages' => [
'en' => 'en-gb',
'de' => 'de-de'
],
'enableLanguageDetection' => false,
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
main.php
中的默认语言配置根据 $language :
'language' => 'en-gb',
现在,我为 API 案例创建了一个模块,其路由如下所示。在哪里api
路由参数映射到我的 API
模块:
API模块路由
application.com/api/<controller>/<action>
模块类
//namespace define
namespace app\modules\api;
use Yii;
/**
* Class api
*
* @package app\modules\api
*/
class api extends \yii\base\Module
{
// ####################################### Class attributes // #####################################################
/**
* Controller namespace
* @var string
*/
public $controllerNamespace = 'app\modules\api\controllers';
// ########################################## Class methods // #####################################################
/**
* Init API module
*/
public function init()
{
//call parent class init
parent::init();
}
}
如果 API 模块被调用,我不希望 yii2-localeurls 重定向到语言环境。找不到有关禁用特定重定向的任何信息 module
, controller
或 route
.
最佳答案
更新/回答:
yii2-localurl现在允许定义 ignoreLanguageUrlPatterns
以从区域设置匹配中排除路由。查看Documentation .
在我的例子中,我想忽略 /api
被 localurl 转换。我的 yii2 配置
如下所示。它就像一个魅力。
'components' => [
'urlManager' => [
'class' => 'codemix\localeurls\UrlManager',
'languages' => [
'en' => 'en-gb',
'de' => 'de-de'
],
'enableLanguageDetection' => false,
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
// Ignore / Filter route pattern's
'ignoreLanguageUrlPatterns' => [
'#^api/#' => '#^api/#',
],
],
],
关于php - 如何在 yii2-localeurls 中禁用特定 Controller /模块的语言环境重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30568692/