FormController.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Storage;
  5. use Illuminate\Support\Str;
  6. class FormController extends Controller
  7. {
  8. public function showForm()
  9. {
  10. return view('form');
  11. }
  12. public function submitForm(Request $request)
  13. {
  14. $validated = $request->validate([
  15. 'name' => 'required|min:2|max:100',
  16. 'email' => 'required|email',
  17. 'phone' => 'required|digits:11',
  18. 'gender' => 'boolean',
  19. 'message' => 'required|min:10|max:1000',
  20. ]);
  21. $filename = 'form-data-' . Str::uuid() . '.json';
  22. Storage::put("form-data/{$filename}", json_encode([
  23. 'id' => Str::uuid(),
  24. 'name' => $validated['name'],
  25. 'email' => $validated['email'],
  26. 'phone' => $validated['phone'],
  27. 'gender' => array_key_exists('gender', $validated) ? $validated['gender'] : 0,
  28. 'message' => $validated['message'],
  29. 'submitted_at' => now()->timezone('Asia/Irkutsk')->toDateISOString(),
  30. ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
  31. return redirect()->route('form.show')
  32. ->with('success', 'Данные успешно сохранены!');
  33. }
  34. public function showData()
  35. {
  36. $files = Storage::files('form-data');
  37. $data = [];
  38. foreach ($files as $file) {
  39. if (pathinfo($file, PATHINFO_EXTENSION) === 'json') {
  40. $content = Storage::get($file);
  41. $data[] = json_decode($content, true);
  42. }
  43. }
  44. return view('data', compact('data'));
  45. }
  46. }