Ошибка 405 (Method Not Allowed) при вополнении запроса через Axios
По умолчанию язык сайта Русский (shop.local/yarn). Все работает прекрасно, никаких ошибок. Магия начинается, когда переключаешься на Украинский язык (shop.local/uk/yarn). При первом нажатии на картинку в консоли появляется ошибка 405, при этом, если нажать ещё раз на это же изображение запрос работает, мы получаем текст НО на русском языке, а не на Украинском. В чем может быть дело?
Update
Если поменять .post('/details/' + this.dataset.yarn) на .post('/uk/details/' + this.dataset.yarn), то роботает нормально, правда перестает работать на Русском. Вот ошибка: https://prnt.sc/1wzpg2j
Model
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use \Mcamara\LaravelLocalization\Facades\LaravelLocalization;
class Yarn extends Model
{
// Scopes
public function scopeSlug($query, $slug)
{
return $query->where('slug', $slug);
}
public function scopeActive($query)
{
return $query->where('active', 1);
}
// Attributes
public function getTitleAttribute()
{
$locale = LaravelLocalization::getCurrentLocale();
$column = "title_" . $locale;
return $this->{$column};
}
public function getTopDescriptionAttribute()
{
$locale = LaravelLocalization::getCurrentLocale();
$column = "top_description_" . $locale;
return $this->{$column};
}
}
Controller
namespace App\Http\Controllers;
use App\Models\Yarn;
class YarnController extends Controller
{
public function details($slug)
{
$yarn = Yarn::slug($slug)
->active()
->firstOrFail();
return response()->json([
'title' => $yarn->title,
'top_description' => $yarn->top_description,
]);
}
}
Route
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\YarnController;
Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['localeCookieRedirect', 'localizationRedirect' ]], function() {
Route::post('/details/{slug}', [YarnController::class, 'details'])->name('yarn.details');
});
Js
document.addEventListener('DOMContentLoaded' , () => {
var images = document.querySelectorAll('.img-container');
function getYarnDetails() {
axios
.post('/details/' + this.dataset.yarn)
.then((response) => {
//
});
}
for (var index = 0; index < images.length; index++) {
images[index].addEventListener('click', getYarnDetails);
}
});