Вот мое определение маршрута:
Код: Выделить всё
$this-\>group('/electronic-invoices', function () use ($container) {
$this-\>post('/duplicate/{id}', InvoiceOutController::class . ':duplicate')-\>setName('duplicate_electronic_invoices');
});
Код: Выделить всё
public function duplicate($request, $response, $args)
{
$this->logger->info('Metodo duplicate chiamato con ID: ' . $args['id']);
$invoiceId = $args['id'];
$originalInvoice = ElectronicInvoice::find($invoiceId);
if (!$originalInvoice) {
return $response->withJson(['success' => false, 'message' => 'Fattura non trovata'], 404);
}
try {
DB::beginTransaction();
$newInvoice = $originalInvoice->replicate();
$newInvoice->invoice_number = $this->generateNewInvoiceNumber();
$newInvoice->date = date('Y-m-d');
$newInvoice->save();
foreach ($originalInvoice->items as $item) {
$newItem = $item->replicate();
$newItem->invoice_id = $newInvoice->id;
$newItem->save();
}
DB::commit();
return $response->withJson(['success' => true, 'message' => 'Fattura duplicata con successo'], 200);
} catch (\Exception $e) {
DB::rollBack();
return $response->withJson(['success' => false, 'message' => 'Errore durante la duplicazione: ' . $e->getMessage()], 500);
}
}
Код: Выделить всё
$('#invoices').on('click', '.duplicate-invoice', function(e) {
e.preventDefault();
var invoiceId = $(this).data('id');
$('#duplicateConfirmModal').modal('show');
$('#confirmDuplicate').off('click').on('click', function() {
$.ajax({
url: '{{ path_for('duplicate_electronic_invoices', {'id': ''}) }}' + invoiceId,
method: 'POST',
success: function(response) {
if (response.success) {
alert(response.message);
table.ajax.reload();
} else {
alert('Errore: ' + response.message);
}
},
error: function() {
alert('Si è verificato un errore durante la duplicazione.');
}
});
$('#duplicateConfirmModal').modal('hide');
});
});
Код: Выделить всё
[Fri Aug 2 17:22:41 2024] ::1:54565 [404]: /electronic-invoices/duplicate/51584
{"error":"Risorsa non trovata."}
- Проверил, что маршрут находится в правильной группе.
- Проверено на наличие опечаток в имени маршрута.
- Добавлены операторы журналирования для всего промежуточного программного обеспечения, но ни один из них, похоже, не срабатывает.
- Проверено, что контроллер и метод существуют и доступны
- Проверено на наличие любого глобального промежуточного программного обеспечения, которое может мешать
Подробнее здесь: https://stackoverflow.com/questions/788 ... e-via-ajax
Мобильная версия