'catalog', 'title' => 'Каталог', ]; public function index(Request $request) { $q = Product::query(); // ------- setup sort and order -------------------------------------------------------------------------------- $this->data['sortBy'] = (!empty($request->sortBy)) ? Str::replace('_txt', '', $request->sortBy) // remove '_txt' fields modifier : Product::DEFAULT_SORT_BY; // check for sortBy is valid field $p = new Product(); if(!in_array($this->data['sortBy'], $p->getFillable())) { $this->data['sortBy'] = Product::DEFAULT_SORT_BY; } // set order $this->data['orderBy'] = (!empty($request->order)) ? 'desc' : 'asc'; $q->orderBy($this->data['sortBy'], $this->data['orderBy']); $this->data['products'] = $q->paginate()->withQueryString(); return view('catalog.index', $this->data); } public function show() { } /** * @param Request $request * @return RedirectResponse */ public function import(Request $request) { // validate data $request->validate([ 'year' => 'required|integer|min:2000|max:' . (int)date('Y', strtotime('next year')), 'import_file' => 'file', ]); // load and save file $path = Str::random(2) . '/' . Str::uuid() . '.' .$request->file('import_file')->getClientOriginalExtension(); Storage::disk('upload')->put($path, $request->file('import_file')->getContent()); // dispatch job ImportCatalog::dispatch($path, $request->year, $request->user()->id); Log::info('ImportCatalog job created!'); return redirect()->route('catalog.index')->with(['success' => 'Задача импорта успешно создана!']); } public function export(Request $request) { return redirect()->route('catalog.index')->with(['success' => 'Задача импорта успешно создана!']); } }