У меня есть проект Laravel 5.4. Существует проблема маршрута, которую я не могу решить на второй день.
У меня есть два маршрута, как:
Route::get('/', 'HomeController@index')->name('index');
public function index(CookieJar $cookieJar, Request $request)
{
// Берем город из куков
$city_from_cookie = Cookie::get('city');
// Если города нет в куках
if (!$city_from_cookie) {
$client = new Client();
$ip = $request->ip() == '127.0.0.1' ? '95.85.70.7' : $request->ip();
$json = $client->request('GET', 'http://freegeoip.net/json/' . $ip . '');
$city = json_decode($json->getBody()->getContents());
if ($city->city === null) {
$cookie = cookie('city', config('custom.city.default_slug'), 21600, null, null, false, true);
$cookieJar->queue($cookie);
$city = config('custom.city.default_slug');
} else {
$city = strtolower($city->city);
try {
$city = City::findBySlugOrFail($city);
$city = $city->slug;
} catch (ModelNotFoundException $ex) {
$city = 'moskva';
}
$cookie = cookie('city', $city, 21600, null, null, false, false);
$cookieJar->queue($cookie);
}
} else {
$city = $city_from_cookie;
}
return redirect(route('city', [$city]), 301);
}
А ТАКЖЕ
Route::get('{city}', 'HomeController@getCityCategories')->name('city');
public function getCityCategories(City $city, CookieJar $cookieJar)
{
// Cache::flush();
// dd(request()->getRequestUri());
$cookie = cookie('city', $city->slug, 21600, null, null, false, false);
$cookieJar->queue($cookie);
$categories = Category::whereNull('parent_id')->with('subcategories')->get();
if ($city->weather_id) {
$weather = $this->getWeather($city->weather_id);
} else {
$weather = [
'city' => '',
'temp_min' => '',
'temp_max' => '',
'day' => '',
'symbol' => '',
'symbol_desc' => ''
];
}
return view('pages.categories', compact('categories', 'city', 'weather'));
}
Проблема в том, что если вы перейдете к корневому методу ‘/’, первый раз метод выполнит свою работу, но когда вы получите такой город, как / moskva, и если вы смените свой город на другой, например / abakan, а затем перейдете к корню ‘/ «Вы будете перенаправлены на / москва. Я перепробовал почти все, отключил кэширование, очистил кеш командами кустарного промысла, но это не помогло. Вот домен для тестирования этой проблемы: okololo.ru
Задача ещё не решена.
Других решений пока нет …