我已在项目中成功设置语言切换器。它在某些页面上工作得很好,但在某些页面中却没有。 这是我的语言切换表单:
<form id="language_switcher_form" action="language" method="post">
<select name="locale" id="language_switcher">
<option value="en" {{App::getLocale()=='en'?' selected' : ''}} class="mt-english"> English</option>
<option value="np" {{App::getLocale()=='np'?' selected' : ''}} class="mt-nepali">Nepali</option>
</select>
{{ csrf_field() }}
</form>
我提交表单的javascript是:
$( "#language_switcher" ).change(function() {
$("#language_switcher_form").submit();
});
语言切换的路由是:
Route::resource('properties', 'PropertiesController');
Route::post('/language', array(
'Middleware'=>'LanguageSwitcher',
'uses'=>'LanguageController@index'
));
我的中间件:
<?php
namespace App\Http\Middleware;
use Closure;
use App;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Config;
class LanguageSwitcher
{
public function handle($request, Closure $next)
{
App::setLocale(Session::has('locale')? Session::get('locale'): Config::get('app.locale'));
return $next($request);
}
}
我的语言控制器是:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Redirect;
use App\Http\Requests;
class LanguageController extends Controller
{
public function index(){
if(!\Session::has('locale')){
\Session::put('locale', Input::get('locale'));
}
else{
session(['locale' => Input::get('locale')]);
}
return Redirect::back();
}
}
当我尝试从主页或http://localhost/myproject/properties 切换语言时,按预期工作。但是,当我尝试从http://localhost/gharsansar/properties/create执行相同操作时,它会将我重定向到http://localhost/gharsansar/properties/ 语言。类似于http://localhost/gharsansar/properties/12,它会重定向到http://localhost/gharsansar/properties/ 语言。我犯了什么错误? 它抛出了这个错误。
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException没有消息
提前谢谢。
答案 0 :(得分:1)
请试试这个:
<form action="{{ route('switch') }}">
和路线:
Route::post('/language',array('Middleware'=>'LanguageSwitcher','uses'=>'LanguageController@index'))->name('switch');