Маршрут Laravel внутри префикса неправильноPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Маршрут Laravel внутри префикса неправильно

Сообщение Anonymous »

Я сталкиваюсь с проблемой маршрутизации в своем приложении Laravel и могу использовать некоторую помощь в выяснении. Для обработки поиска я создал выделенный маршрут и метод контроллера: < /p>

Код: Выделить всё

Route::prefix('admin')->name('admin.')->group(function () {
Route::get('coupons/search', [CouponController::class, 'search'])->name('coupons.search');
Route::resource('coupons', CouponController::class)->names('coupons');
});
Мое предположение было, что/администратор/купоны/маршрут поиска был бы доступен и обрабатывается правильно, но когда я делаю запрос из JavaScript, я получаю ошибку 404.

Код: Выделить всё

function couponSearch() {
return {
search: '',
coupons: [],
selectedCoupon: null,

async searchCoupons() {
this.selectedCoupon = null;
if (this.search.length < 2) {
this.coupons = [];
return;
}

try {
console.log('Searching for coupon:', this.search);

const response = await fetch(`/admin/coupons/search?q=${encodeURIComponent(this.search)}`, {
method: 'GET',
headers: {
'Accept': 'application/json',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
}
});

if (!response.ok) {
throw new Error(`Search failed with status: ${response.status}`);
}

this.coupons = await response.json();
console.log('Coupons found:', this.coupons);
} catch (e) {
console.error('Error searching coupons:', e);
this.coupons = [];
}
},

selectCoupon(coupon) {
this.selectedCoupon = coupon;
this.search = coupon.code;
this.coupons = [];
}
};
}
< /code>
Вот метод контроллера, обрабатывающий запрос: < /p>
public function search(Request $request)
{
dd($request->all()); // Debugging request

$query = $request->input('q');

Log::debug('Coupon search request', ['query' => $query]);

if (empty($query)) {
return response()->json([]);
}

$coupons = Coupon::where('is_active', true)
->where(function ($q) use ($query) {
$q->where('code', 'like', "%$query%");
})
->where(function ($q) {
$q->whereNull('valid_until')
->orWhere('valid_until', '>=', now());
})
->where(function ($q) {
$q->whereNull('max_uses')
->orWhereRaw('uses < max_uses');
})
->get(['id', 'code', 'discount_type', 'discount_value']);

Log::debug('Coupon search results', ['count' => $coupons->count()]);

return response()->json($coupons);
}
< /code>
Консоль вывод: < /p>
Searching for coupon: test
GET http://127.0.0.1:8000/admin/coupons/search?q=test 404 (Not Found)
Error searching coupons: Error: Search failed with status: 404
Вещи, которые я проверил:

Маршрут поиска определяется перед маршрутом :: Ресурс. /> < /ul>

Код: Выделить всё

GET|HEAD        admin/coupons ...... admin.coupons.index › Admin\CouponController@index
POST            admin/coupons ...... admin.coupons.store › Admin\CouponController@store
GET|HEAD        admin/coupons/create admin.coupons.create › Admin\CouponController@create
GET|HEAD        admin/coupons/search  admin.coupons.search › Admin\CouponController@search
GET|HEAD        admin/coupons/{coupon}  admin.coupons.show › Admin\CouponController@show
PUT|PATCH       admin/coupons/{coupon}  admin.coupons.update › Admin\CouponController@update
DELETE          admin/coupons/{coupon}  admin.coupons.destroy › Admin\CouponController@destroy
GET|HEAD        admin/coupons/{coupon}/edit  admin.coupons.edit › Admin\CouponController@edit
Laravel, возможно, поймает запрос с помощью определения ресурса: Или есть что -то, что я упускаю из -за того, как маршруты приоритеты или разрешены? Спасибо 🙏


Подробнее здесь: https://stackoverflow.com/questions/796 ... pons-searc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»