Saya mencoba membuat swith bahasa di Laravel 5.1.

Di config/languages.php saya, saya menggunakan:

<?php

return [
    'en' => 'en',
    'ru' => 'ru',
];

Di LanguageController saya, saya menggunakan:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Http\Requests;
use Config;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;

class LanguageController extends Controller {

    public function switchLang($lang)
        {
        if (array_key_exists($lang, Config::get('languages'))) {
            Session::set('applocale', $lang);
        }
        return Redirect::back();
        }
}

Di layout.blade saya menulis:

const LANG = '{{ Config::get('languages')[App::getLocale()] }}';

Di app/Http/Kernel saya tambahkan di 22 baris:

\App\Http\Middleware\Language::class,

Dan di rute yang saya gunakan:

Route::get('lang/{lang}', ['as'=>'lang.switch', 'uses'=>'LanguageController@switchLang']);

Tetapi ketika saya mencoba membuka site.com/lang/en saya menerima kesalahan:

ErrorException in LanguageController.php line 16:
array_key_exists() expects parameter 2 to be array, null given

Siapa yang bisa mengatakan saya, di mana kesalahan saya? Jika Anda membutuhkan lebih banyak detail - silakan, tanyakan

0
mouse_ua 11 Juli 2020, 23:53

2 jawaban

Coba hapus cache konfigurasi

php artisan config:cache
0
Victor S. 11 Juli 2020, 21:52

Coba ini :

public function switchLang($lang)
{
   if ($lang) {
      App::setLocale($lang);
      session()->put('applocale', $lang);
   }
   return Redirect::back();
}
0
STA 12 Juli 2020, 08:38