2016-11-08 15 views
1

国際化を使用してページを変更しようとすると、高度なテンプレートに問題があります。 私は説明しようとします。私は、この手順に従う必要があり、私のサイト上で国際化を使用するには:Yii2 - 言語の変更

<?php 
    return [ 
    'adminEmail' => '[email protected]', 
    'languages' => [ 
    'en' => 'English', 
    'it' => 'Italian', 
    ], 
    ]; 

私は私のフロントエンド\ビュー\レイアウトでこれを追加した\にmain.php:params.phpで

を、私は、この追加しました私はmain.js.という名前の新しいファイルを作成した後

<?php 
    foreach(Yii::$app->params['languages'] as $key => $language){ 
    echo '<span class="language" id ="'.$key.'">'.$language.' | </span>'; 
    } 
?> 

:言語は、上記挿入私のウェブサイト上で呼び出しますyii2がmain.jsファイルを見ることを許可するために、AppAsset.phpにこれを追加しました(これは正しいですか?)。私はコンポーネントでこれを追加したのconfig \のmain.phpで後

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でその後

$(function(){ 
    $(document).on('click','.language', function(){ 
    var lang = $(this).attr('id'); 
    $.post('index.php?r=site/language', {'lang':lang},function(data){ 
    location.reload(); 
    }); 
}); 
$(document).on('click','.fc-day', function(){ 
    var date = $(this).attr('data-date');  
     $get('index.php?r=event/create',{'date':date},function(data){ 
      $('#modal').modal(show) 
      .find('#modalContent') 
      .html(data);    
     }); 
}); 

$('#modalButton').click(function(){ 
     $('#modal').modal(show) 
     .find('#modalContent') 
     .load($(this).attr('value')); 
}); 
}); 

:このファイルでは、私はこれを挿入します

'components' => [ 
    'i18n' => [ 
     'translations' => [ 
      'app' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       //'basepath' => @app/messages, 
       'sourceLanguage' => 'it', 
       'fileMap' => [ 
        'app' => 'app.php', 
        'app/error' => 'error.php', 
       ], 
      ], 
     ], 
    ], 

最後に私は、メッセージ\ itとmessages \ enというフォルダを作成し、app.phpという2つのファイル(フォルダごとに1つ)を作成しました。このテキストを挿入しました:

すべてです
<?php 
    return [ 
     'Benvenuto' => 'Welcome' 
    ]; 

...しかし、私は、言語の1(イタリア語または英語)をクリックしたとき、私のホーム・ページ(正しく)をロードした後、私は次のメッセージを参照してください。版= 1.11

jquery.jsを? 0.3:4 POST http://localhost/mdf/frontend/web/index.php?r=site/language 400(不正なリクエスト)

そして、私が直接このURLを貼り付けしようとすると、私は空白のページを取得: http://localhost/mdf/frontend/web/index.php?r=site/language

答えて

1

これは、あなたの質問

に部分的にしか応答であります3210

ブラウザを使用して呼び出したときの空白のページは、この場合にノートを表示しないという事実に関連している可能性があります。

は、このよう

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', []); 
    } 
} 
+0

AJAXを管理しようと自然に私は常にエラー400不正なリクエストに関する他の問題を抱えている...私は空白のページの問題を解決し...ありがとう... – Carlo

関連する問題