【问题标题】:Laravel language switching not working for some routes in Laravel 5.5Laravel 语言切换不适用于 Laravel 5.5 中的某些路由
【发布时间】: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


    【解决方案1】:

    请试试这个:

    <form action="{{ route('switch') }}">
    

    在路线中:

    Route::post('/language',array('Middleware'=>'LanguageSwitcher','uses'=>'LanguageController@index'))->name('switch');
    

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 2018-08-05
      • 2018-04-11
      • 1970-01-01
      • 2018-06-23
      • 2019-04-02
      • 2017-05-03
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多