Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2-更改语言_Php_Yii2_Yii2 Advanced App - Fatal编程技术网

Php Yii2-更改语言

Php Yii2-更改语言,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,当我尝试使用国际化更改页面时,我的高级模板有问题。 我试着解释。要在我的网站上使用国际化,我必须遵循以下步骤: 在params.php中,我添加了以下内容: <?php return [ 'adminEmail' => 'admin@example.com', 'languages' => [ 'en' => 'English', 'it' => 'Italian', ], ]; public functi

当我尝试使用国际化更改页面时,我的高级模板有问题。 我试着解释。要在我的网站上使用国际化,我必须遵循以下步骤:

在params.php中,我添加了以下内容:

<?php
   return [
     'adminEmail' => 'admin@example.com',
     'languages' => [
     'en' => 'English',
     'it' => 'Italian',
    ],
  ];
public function actionLanguage()
{
    if(isset($_POST['lang'])){
        Yii::$app->language = $_POST['lang'];
        $cookie = new Yii\web\cookie([
        'name'=>'lang',
        'value'=>$_POST['lang']
    ]);
    Yii::$app->getResponse()->getCookies()->add($cookie);
    }
}
在此之后,我在sitecontroller.php中添加了以下内容:

<?php
   return [
     'adminEmail' => 'admin@example.com',
     'languages' => [
     'en' => 'English',
     'it' => 'Italian',
    ],
  ];
public function actionLanguage()
{
    if(isset($_POST['lang'])){
        Yii::$app->language = $_POST['lang'];
        $cookie = new Yii\web\cookie([
        'name'=>'lang',
        'value'=>$_POST['lang']
    ]);
    Yii::$app->getResponse()->getCookies()->add($cookie);
    }
}
在config\main.php中,我在组件中添加了以下内容:

'components' => [
    'i18n' => [
        'translations' => [
            'app' => [
                'class' => 'yii\i18n\PhpMessageSource',
                //'basepath' => @app/messages,
                'sourceLanguage' => 'it',
                'fileMap' => [
                    'app' => 'app.php', 
                    'app/error' => 'error.php',
                ],
            ],
        ],
    ],
最后,我在根目录上创建了一个名为messages\it和messages\en的文件夹,并在两个名为app.php的文件(每个文件夹一个)中插入以下文本:

<?php
   return [
      'Benvenuto' => 'Welcome'
   ];

这只是对您问题的部分回答

使用浏览器调用时的空白页可能与在这种情况下不呈现任何内容有关

尝试用这种方式管理ajax

public function actionLanguage()
{
    if (Yii::$app->request->isAjax) {
        $data = Yii::$app->request->post();
        if(isset($data['lang'])) {
            Yii::$app->language = $data['lang'];
            $cookie = new Yii\web\cookie([
              'name'=>'lang',
              'value'=>$_POST['lang']
            ]);
          Yii::$app->getResponse()->getCookies()->add($cookie);
          return;
        }
    } else {
        return $this->render('index', []);
    }
}

谢谢…我解决了空白页面的问题…自然我总是有错误400错误的其他问题…