2016-07-25 67 views
4

thread我试图执行额外的英语,我的网站,默认的是法国,并且不使用任何前缀,所以像www.website.com并切换到英语会是www.website.com/en/,我想分别为英文和法文版的联系页面的网址,例如www.website.com/en/contactwww.website.com/contact在此基础上如何生成的URL路径与两种语言在Laravel

我现在的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 

和我生成URL的方式来

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

我会喜欢知道一个更清洁的方式来产生这些,以及如何我可以得到英文主页网址是www.website.com/en/我ns的www.website.com/en

非常感谢!

回答

1

生成URL最好的办法是:

首先,提供一个名称侑路线:

//this route is called 'contact_route' 
Route::get('/contact/', ['as' => 'contact_route', function() 
{ 
    return view('contact'); 
}]); 

途径是建立dynamycally使用的语言环境和前缀,但一旦路由被定义和你已经给它一个名称,您可以创建使用route helper与路由器的URL:route('contact_route')

你的榜样将成为:

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

可李尔更命名路由在docs

至于最后的斜线,默认的Laravel .htaccess文件,删除的网址结尾处,所有的斜线,这条规则:

RewriteRule ^(.*)/$ $1 [L,R=301] 

捕获从^开始的所有内容(.*)到斜杠/$之前的末尾并将其替换为捕获的内容。所以,如果你想添加一个尾随斜线,也许你应该编辑.htaccess文件

+0

谢谢很多 !我会详细介绍这条线路()的工作原理。 – adaba

+0

@adaba:不客气。我刚刚添加了一些链接到文档:) – Moppo

0

您可以使用路由组

所有英语

Route::group(['prefix' => 'en', 'namespace' => '\English'], function() { 
    Route::get('contact', [ 
    'as' => 'en.contact', 
    'uses' => '[email protected]', 
    ]); 
}); 

所有的法国路线

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