URL에 항상 도시가 필요한 웹 사이트를 개발 중입니다. 이런 식으로 뭔가 : 제가 제안을 볼 수있는 도시를 선택하는 페이지로 그를 리디렉션 할 필요가동적 경로 접두사를 정의하십시오.
http://www.examples.com/offers
:
http://www.examples.com/city/offers
사용자가이 URL에 액세스하려고합니다. 사용자가 이미 도시를 선택하면 쿠키 또는 세션을 설정하여 선택한 도시를 식별합니다.
경로 접두사를 사용하여 수행 할 수 있지만 어떻게 동적으로 수행합니까?
`http://www.example.com/blog`
이 시스템은 '블로그'라고 생각합니다
현재는 다음과 같습니다
이 코드의 문제는 사용자 액세스 페이지 경우 것으로$city = Request::segment(1);
Route::group(array('prefix' => $city), function()
{
Route::get('/', array('as' => 'home', 'uses' => '[email protected]'));
/* Blog Resource */
Route::resource('blog', 'BlogController', array('only' => array('index', 'show')));
});
입니다 :
나는이 방법을 시도했습니다 시티.
내가 해봤 또 다른 방법은 (코드는 더러운 조금) : 위의 코드와
$city = Request::segment(1);
if ($city == null)
{
$city = Session::get('cidade');
}
if ($city != null)
{
$city = City::where('slug', '=', $city)->first();
}
if (sizeof($city) > 0)
{
Session::put('city', $city['slug']);
$requestedPath = Request::path();
if (!str_contains($requestedPath, $city['slug']))
{
return Redirect::to('/' . $city['slug'] . $requestedPath)->sendHeaders();
}
}
else
{
Redirect::to('/choose')->sendHeaders();
exit();
}
Route::group(array('prefix' => $city), function()
{
Route::get('/', array('as' => 'home', 'uses' => '[email protected]'));
Route::resource('blog', 'BlogController', array('only' => array('index', 'show')));
});
문제는 루프입니다. 사용자가 페이지 http://www.example.com/offers
에 액세스하는 경우 시스템에서는 offers
이 도시가 아니며 http://www.example.com/choose
으로 사용자를 리디렉션하므로 사용자가 도시를 선택할 수 있습니다. 그러나 choose
으로 리디렉션하면 시스템에서 다시 choose
을 인식하고 리디렉션을 계속합니다 ...
하위 도메인을 사용할 수있는 옵션이 있지만이 경우 클라이언트 이 방법이 필요합니다.
이미이 패키지 (https://github.com/jasonlewis/enhanced-router)를 사용해 보았지만 문제가 50 %까지 해결되었습니다. 또 다른 문제는 항상 URL 만들 때 도시를 넣어 저를 강요한다는 것입니다 : 귀하의 게시물을 읽고 나면
{{ URL::action('[email protected]', 'city' }}
내 문제가 해결되었습니다. 고맙습니다. – Fuhrmann