ParserLinkController.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. /*
  4. * ParserLinkController — управление ссылками для парсера в административной панели.
  5. *
  6. * Маршруты: GET /admin/parser-links (список/форма), POST /admin/parser-links (сохранение)
  7. * Логика: при сохранении удаляет все старые записи и вставляет новые (полная замена списка).
  8. * Создан: 2026-06-06
  9. */
  10. use App\Http\Controllers\Controller;
  11. use App\Models\ParserLink;
  12. use Illuminate\Http\RedirectResponse;
  13. use Illuminate\Http\Request;
  14. use Illuminate\View\View;
  15. class ParserLinkController extends Controller
  16. {
  17. // Показывает страницу со списком ссылок для парсера
  18. public function index(): View
  19. {
  20. $links = ParserLink::orderBy('sort_order')->orderBy('id')->get();
  21. return view('admin.parser_links.index', compact('links'));
  22. }
  23. // Сохраняет список ссылок: удаляет старые, вставляет новые
  24. public function update(Request $request): RedirectResponse
  25. {
  26. $request->validate([
  27. 'urls' => 'nullable|array',
  28. 'urls.*' => 'nullable|url|max:500',
  29. ]);
  30. $urls = collect($request->input('urls', []))
  31. ->filter(fn ($u) => filled($u))
  32. ->values();
  33. ParserLink::truncate();
  34. $urls->each(function ($url, $i) {
  35. ParserLink::create(['url' => $url, 'sort_order' => $i]);
  36. });
  37. return redirect()->route('admin.parser-links.index')
  38. ->with('success', 'Ссылки для парсера сохранены.');
  39. }
  40. }