public function addNew(Request $request) { $validator = Validator::make($request->all(), ['editorArticle' => 'required|string|max:100000', 'InputImage' => 'required|image|max:100000', 'categoryId' => 'required|numeric', 'publishTime' => 'required', 'publish' => 'required|numeric', 'title' => 'required|string|max:400', 'SeeAlso' => 'required']); if ($validator->fails()) { $error = $validator->errors()->all(); return response()->json(['error' => true, 'reason' => $error]); } if (count(json_decode($request->get('SeeAlso'))) != 3) { return response()->json(['error' => true, 'reason' => 'Выбрано не 3 релевантных новости']); } $title = $request->get('title'); // изображение статьи $img = $request->file('InputImage'); // транслит для урла $url = Translit::translit($title); // получение mime типа $mimeType = $img->getMimeType(); $mimeTypeAvailable = ['image/png', 'image/jpeg', 'image/gif']; // фича для получения расширения по mime types foreach ($mimeTypeAvailable as $v) { if ($mimeType == $v) { $imgName = $url . '.' . preg_replace("/.*\\/(.*)/ui", "\${1}", $v); break; } } // путь сохранения изображения $imgPath = '../resources/images/news/new/' . $imgName; // сохраняем изображение Image::make($img)->resize(270, 190)->save($imgPath); // количество просмотров $views = mt_rand(100, 900); // пост-публикация $publishTime = $request->get('publishTime'); // разбиваем массив $publishTimeArray = explode('-', $publishTime); // если не задан, то публикуем сейчас, иначе по заданному времени if ($publishTime == 'false') { $publishTime = Carbon::now(); } else { $publishTime = Carbon::create($publishTimeArray[0], $publishTimeArray[1], $publishTimeArray[2]); } // попытка добавить данные try { $query = _New::create(['text' => $request->get('editorArticle'), 'title' => $request->get('title'), 'category_id' => $request->get('categoryId'), 'pic_preview' => $imgName, 'views' => $views, 'url' => $url, 'see_also' => $request->get('SeeAlso'), 'published_at' => $publishTime, 'publish' => $request->get('publish')]); return \Response::json($query); // если ошибка, ловим ее и возвращаем error } catch (\Exception $e) { return response()->json(['error' => true, 'reason' => $e->getMessage() . ' строка ' . $e->getLine()]); } }