У меня проблема с моими URL.
У меня есть функция публикации новостей на моем веб-сайте. Я использовал Voyager CMS для этого. И мой веб-сайт имеет 3 языка ('ru', 'en', 'uz'). На самом деле я могу добавить новости на трех языках. Некоторые новости добавляются только на одном языке. Два других - это emypty.
И мой прямой URL для реальной статьи выглядит так: https://mywebsite.uz/hcont/562.
Например, языком сайта по умолчанию является английский sh. Я добавил новый пост только на русском языке (engli sh и узбек пуст). Когда кто-то получает доступ к недавно добавленной записи по прямому URL https://mywebsite.uz/hcont/562, как это. Это показывает пустую страницу. Потому что сайт загружает язык по умолчанию (если вы заходите на сайт впервые). Я хочу изменить локаль, нажав прямой URL.
Я знаю, что сначала я должен сделать маршрут https://mywebsite.uz/news/562/en таким. Вопрос в том, как мне настроить этот URL в промежуточном программном обеспечении, контроллере и маршруте?
Ниже моего кода, который сейчас работает для https://mywebsite.uz/hcont/562:
web. php
Route::resource('hcont','HomeController');
Route::get("locale/{locale}" , function($locale){
Session::put('locale',$locale);
return redirect()->back();
});
HomeController. php
public function show($id){
$data = News::findOrFail($id);
$data->load('translations');
return view('the-news' , compact('data' ,'locale'));
}
home.blade. php
@foreach($news as $item)
<a href="{{ route('hcont.show', $item->id) }}">
<div class="news-item">
<div>
<img src="{{Voyager::image($item->img)}}" alt="">
<div class="news-content">
<h5>{!!$item->getTranslatedAttribute('title', \App::getLocale(), 'ru')!!}</h5>
<p>{!!str_limit($item->getTranslatedAttribute('body', \App::getLocale(), 'ru') , 70)!!}</p>
</div>
</div>
</div>
</a>
@endforeach
Локализация. php
public function handle($request, Closure $next)
{
if(\Session::has('locale')){
\App::setLocale(\Session::get('locale'));
}
return $next($request);
}