Php 如何在Laravel中生成两种语言的路由url

Php 如何在Laravel中生成两种语言的路由url,php,laravel,laravel-5,localization,routes,Php,Laravel,Laravel 5,Localization,Routes,基于此,我尝试为我的网站实现额外的英语语言,默认为法语,不使用任何前缀,因此类似于www.website.com和切换到英语的东西将是www.website.com/en/,我想要联系页面的url,例如英文版和法文版的www.website.com/en/contact和www.website.com/contact My current routes.php if (Request::segment(1) == 'en') { App::setLocale(Request::segme

基于此,我尝试为我的网站实现额外的英语语言,默认为法语,不使用任何前缀,因此类似于
www.website.com
和切换到英语的东西将是
www.website.com/en/
,我想要联系页面的url,例如英文版和法文版的
www.website.com/en/contact
www.website.com/contact

My current routes.php

if (Request::segment(1) == 'en') {
    App::setLocale(Request::segment(1));
    Config::set('app.locale_prefix', Request::segment(1));
}
else {
    App::setLocale('fr');
    Config::set('app.locale_prefix', '');
}

Route::group(array('prefix' => Config::get('app.locale_prefix')), function()
{
    Route::get(
        '/',
        function () {
            //return "main page - ".App::getLocale();
            return view('index');
        }
    );
    Route::get(
        '/contact/',
        function () {
            return view('contact');
        });
});
用于切换语言的标志图标所在的我的头文件

    @if (Lang::locale() == 'fr')
        <a href="{{ url('/en/' . Request::segment(1)) }}"><img src="{{asset('images/GB.png')}}"></a>
    @elseif (strcasecmp(Request::segment(1), 'en') == 0 && Request::segment(2) != NULL)
        <a href="{{ url( Request::segment(2)) }}"><img src="{{asset('images/FR.png')}}"></a>
    @else
        <a href="{{ url( '/') }}"><img src="{{asset('images/FR.png')}}"></a>
    @endif
@if(Lang::locale()=“fr”)
@elseif(strcasecmp(请求::段(1),'en')==0&&Request::段(2)!=NULL)
@否则
@恩迪夫
以及我生成URL的方式

<a class="block-title" href="{{ (strcasecmp(Request::route()->getPrefix(), '/en') == 0) ? url('en/contact') : url('/contact') }}">CONTACT</a>

我想知道一种更干净的方法来生成这些内容,以及如何将英文主页url设置为
www.website.com/en/
而不是
www.website.com/en


非常感谢

生成URL的最佳方法是:

首先,给你的路线命名:

//this route is called 'contact_route'
Route::get('/contact/', ['as' => 'contact_route', function () 
{
    return view('contact');
}]);
路由是使用区域设置和前缀动态生成的,但一旦定义了路由并为其命名,就可以使用with:
route(“contact\u route”)为路由创建URL

您的示例将成为:

<a class="block-title" href="{{ route('contact_route') }}">CONTACT</a>

它捕获从开始到斜杠前结束的所有内容,并用捕获的内容替换。因此,如果要添加尾随斜杠,可能应该编辑
.htaccess
文件

,您可以使用路由组

全英语

Route::group(['prefix' => 'en', 'namespace' => '\English'], function () {
  Route::get('contact', [
    'as'   => 'en.contact',
    'uses' => 'ContactController@contactUs',
  ]);
});
所有法国航线

Route::group(['prefix' => 'fr', 'namespace' => '\French'], function () {
  Route::get('contact', [
    'as'   => 'fr.contact',
    'uses' => 'ContactController@contactUs',
  ]);
});

谢谢!我将进一步了解这个route()的工作原理。@adaba:不客气。我刚刚添加了几个文档链接:)
Route::group(['prefix' => 'fr', 'namespace' => '\French'], function () {
  Route::get('contact', [
    'as'   => 'fr.contact',
    'uses' => 'ContactController@contactUs',
  ]);
});