Laravel Redirect 404 выпуск после подачи формы.Php

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

Сообщение Anonymous »

Я разработал веб -приложение с Laravel.
К сожалению, я получаю 404 после сохранения формы. Но журнал показывает мне, что задача была успешно обновлена. перенаправлен на URL /Tasks /{id}. Однако, если я хочу заранее отредактировать задачу, я перенаправлен на URL -задачи /{id} /edit. < /P>
Я изменил маршруты и уже проверил все (положить) и т. Д.
, к сожалению, у меня больше нет идей.public function update(Request $request, Task $task) {

\Log::info('Updating task with ID: ' . $task->id);
$validated = $request->validate([
'title' => 'required|string|max:255',
'user_id' => 'nullable|exists:users,id',
'customer_id' => 'required|exists:customers,id',
'start_time' => 'nullable|date',
'end_time' => 'nullable|date|after_or_equal:start_time',
'status' => 'required|in:open,done,not_done,billed',
'comment' => 'nullable|string',
'categories' => 'nullable|array',
'categories.*' => 'exists:task_categories,id',
'contact_id' => 'nullable|exists:contacts,id',
]);

$user = User::findOrFail($validated['user_id']);
$customer = Customer::findOrFail($validated['customer_id']);
$task->contact_id = $request->input('contact_id');
$pdfPath = null;
$secondPdfPath = null;

// ⬇️ PDFs nur generieren, wenn aus Modal gespeichert wird
if ($request->input('request_source') === 'form') {

if ($request->filled('service_report_id')) {
$first_service = FirstServiceRecords::findOrFail($task->service_report_id);
$first_service_material_consumption = DB::table('service_materials')
->where('first_service_record_id', $task->service_report_id)->get();
$first_service_travel_details = DB::table('first_service_travel_details')
->where('first_service_record_id', $task->service_report_id)->get();

$pdf = Pdf::loadView('tasks.pdf', [
'modal_title' => $request->modal_title,
'modal_description' => $request->modal_description,
'user' => $user->name,
'customer' => $customer,
'service' => $first_service,
'service_travel_details' => $first_service_travel_details,
'service_material_consumption' => $first_service_material_consumption,
]);

$fileName = 'task_' . $task->id . '_' . time() . '.pdf';
$pdfPath = 'pdfs/' . $fileName;
$pdf->save(public_path($pdfPath));
}

if ($request->filled('second_service_report_id')) {
$service = ServiceRecord::findOrFail($request->second_service_report_id);
$service_material_consumption = DB::table('task_reports_material_consumption')
->where('service_record_id', $request->second_service_report_id)->get();
$service_travel_details = DB::table('service_travel_details')
->where('service_record_id', $request->second_service_report_id)->get();

$pdf2 = Pdf::loadView('tasks.pdf', [
'modal_title' => $request->modal_title,
'modal_description' => $request->modal_description,
'user' => $user->name,
'customer' => $customer,
'service' => $service,
'service_travel_details' => $service_travel_details,
'service_material_consumption' => $service_material_consumption,
]);

$secondFileName = 'second_task_' . $task->id . '_' . time() . '.pdf';
$secondPdfPath = 'second_pdfs/' . $secondFileName;
$pdf2->save(public_path($secondPdfPath));
}
}

// 🛠️ Task aktualisieren
$task->fill([
'title' => $validated['title'],
'user_id' => $validated['user_id'],
'customer_id' => $validated['customer_id'],
'status' => $validated['status'],
'start_time' => $validated['start_time'],
'end_time' => $validated['end_time'],
'comment' => $validated['comment'],
'modal_title' => $request->modal_title ?? '',
'modal_description' => $request->modal_description ?? '',

]);

if ($pdfPath) {
$task->pdf_path = $pdfPath;
}

if ($secondPdfPath) {
$task->second_pdf_path = $secondPdfPath;
}

if ($request->filled('service_report_id')) {
$task->service_report_id = $request->service_report_id;
}

if ($request->filled('second_service_report_id')) {
$task->second_service_report_id = $request->second_service_report_id;
}

$task->save();

// 🧹 Altes Auftrag-PDF ersetzen, nur wenn kein Urlaub/Krank
$isVacationOrSick = false;
if ($request->has('categories')) {
$urlaubId = TaskCategory::where('name', 'Urlaub')->first()?->id;
$krankId = TaskCategory::where('name', 'Krank')->first()?->id;
$selected = $request->input('categories', []);
$isVacationOrSick = in_array($urlaubId, $selected) || in_array($krankId, $selected);
}

if (!$isVacationOrSick) {
if ($task->pdf_path && file_exists(public_path($task->pdf_path))) {
unlink(public_path($task->pdf_path));
}

$taskWithRelations = Task::with(['customer', 'contact', 'user'])->find($task->id);
$auftragPdf = Pdf::loadView('tasks.pdf_auftrag', ['task' => $taskWithRelations]);
$auftragName = 'auftrag_' . $task->id . '_' . time() . '.pdf';
$auftragPath = 'pdfs/' . $auftragName;
$auftragPdf->save(public_path($auftragPath));

$task->pdf_path = $auftragPath;
$task->save();
}

// Kategorien synchronisieren
if (!empty($validated['categories'])) {
$task->categories()->sync($validated['categories']);
}

if ($request->ajax()) {
return response()->json(['message' => 'Aufgabe erfolgreich gespeichert.']);
}

return redirect()->route('tasks.edit', ['id' => $task->id])->with('success', 'Aufgabe erfolgreich gespeichert.');
}
< /code>
my web.php: < /p>
Route::get('/tasks', [TaskController::class, 'index'])->name('tasks.index');
Route::get('/tasks/create', [TaskController::class, 'create'])->name('tasks.create');
Route::post('/tasks', [TaskController::class, 'store'])->name('tasks.store');
Route::get('/tasks/{id}', [TaskController::class, 'show'])->name('tasks.show');
Route::get('/tasks/{id}/edit', [TaskController::class, 'edit'])->name('tasks.edit');
Route::put('/tasks/{task}', [TaskController::class, 'update'])->name('tasks.update');
Route::delete('/tasks/{id}', [TaskController::class, 'destroy'])->name('tasks.destroy');
< /code>
и my edit.blade.php < /p>

@csrf
@method('PUT')
SOEM FIELDS

< /code>
update < /strong> < /p>
У меня есть функция редактирования:
ublic function edit ($ id)
{< /p>
$task = Task::findOrFail($id);

$users = User::where('role', 'employee')->get();
$customers = Customer::all();
$categories = TaskCategory::all();
$diagnoses = Diagnosis::all();
$selectedDiagnosisId = $task->diagnosis_id;

$task_service_forms = DB::table('table_task_service_files')
->where('task_id', $id)
->where('status', 1)
->get();

$task_second_service_forms = DB::table('table_task_second_service_files')
->where('task_id', $id)
->where('status', 1)
->get();

// Prüfen, ob es eine AJAX-Anfrage ist (für Modal)
if (request()->ajax()) {
return view('tasks.partials.EditTaskModal', compact(
'task',
'users',
'customers',
'categories',
'diagnoses',
'selectedDiagnosisId',
'task_service_forms',
'task_second_service_forms'
));
}

// Normale Seite aufrufen
return view('tasks.edit', compact(
'task',
'users',
'customers',
'categories',
'diagnoses',
'selectedDiagnosisId',
'task_service_forms',
'task_second_service_forms'
));
}
< /code>
Решение найдено: < /p>
Я нашел проблему и хотел бы поделиться ею.
можно сохранить задачу, не назначая ее пользователю < /p>
В функции обновления я делаю это: < /p>
< /p>
В функции обновления$user = User::findOrFail($validated['user_id']);
$customer = Customer::findOrFail($validated['customer_id']);


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

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

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

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

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

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