【发布时间】:2018-09-22 08:43:51
【问题描述】:
我已在我的项目中成功设置语言切换器。它在某些页面上工作得很好,但在某些页面上却不行。 这是我的语言切换form:
<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();
}
}
当我尝试从 homepage 或 http://localhost/myproject/properties 切换语言时,它按预期工作。但是当我尝试从http://localhost/gharsansar/properties/create 执行相同操作时,它会将我重定向到http://localhost/gharsansar/properties/language。与http://localhost/gharsansar/properties/12 类似,它重定向到http://localhost/gharsansar/properties/语言。我犯了什么错误? 它会引发此错误。
Symfony\Component\HttpKernel\Exception\ MethodNotAllowedHttpException 无消息
提前谢谢你。
【问题讨论】:
标签: routing locale url-redirection laravel-5.5