php - 如何在 yii2-localeurls 中禁用特定 Controller /模块的语言环境重定向

标签 php yii2

我正在使用 yii2-localeurls在 Yii2 中与语言环境相处。一切都很好。通过阅读文档,您会看到,重定向到配置的语言或默认语言会自动发生(即使 enableLanguageDetectionfalse )。我创建了一个 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 , controllerroute .

最佳答案

更新/回答:

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/

相关文章:

yii2 - 使用数据库表达式或 PHP 日期时间作为时间戳?

php - Yii2 Gridview错误

.htaccess - 漂亮的网址不起作用

yii2 - 如何在 Yii2 的下拉菜单中添加占位符?

Php + MySQL 横幅旋转器按顺序

yii2 - Composer 依赖于自己的 fork 存储库

php - 基于 PHP codeigniter 的网站上的搜索选项

php - 在 PHP 中通过 POST 传递数组以插入到 MySQL 中

html - 哪种 PHP 模板引擎语法最适合使用?

javascript - 无需提交即可将信息传递给 php 表单的按钮