Laravel 语言切换不适用于 Laravel 5.5 中的某些路线
Laravel language switching not working for some routes in Laravel 5.5
我已经在我的项目中成功设置语言切换器。它在某些页面上工作得很好,但在某些页面上效果不佳。
这是我的语言切换形式:
<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 , it works as expected. But when I try to do the same from http://localhost/gharsansar/properties/create it redirects me to http://localhost/gharsansar/properties/language. Similary for http://localhost/gharsansar/properties/12 it redirects to http://localhost/gharsansar/properties/语言切换语言时。我犯了什么错误?
它抛出这个错误。
Symfony \ Component \ HttpKernel \ Exception \
MethodNotAllowedHttpException No message
提前致谢。
请试试这个:
<form action="{{ route('switch') }}">
在路线中:
Route::post('/language',array('Middleware'=>'LanguageSwitcher','uses'=>'LanguageController@index'))->name('switch');
我已经在我的项目中成功设置语言切换器。它在某些页面上工作得很好,但在某些页面上效果不佳。 这是我的语言切换形式:
<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 , it works as expected. But when I try to do the same from http://localhost/gharsansar/properties/create it redirects me to http://localhost/gharsansar/properties/language. Similary for http://localhost/gharsansar/properties/12 it redirects to http://localhost/gharsansar/properties/语言切换语言时。我犯了什么错误? 它抛出这个错误。
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message
提前致谢。
请试试这个:
<form action="{{ route('switch') }}">
在路线中:
Route::post('/language',array('Middleware'=>'LanguageSwitcher','uses'=>'LanguageController@index'))->name('switch');