share([ "urlPrefix" => $this->urlPrefix, "bladePath" => $this->bladePath, "modelName" => $this->modelName, "guardName" => $this->guardName ]); if ($this->modelClass) { $this->model = new $this->modelClass; } else { $this->model = new CommonModel(); } if (!$this->formClass) { $this->formClass = EmptyForm::class; } } public function guard() { return auth()->guard($this->guardName); } public function guardName() { return $this->guardName; } public function callback($success = true, $msg = "", $url = "") { return view("public.callback", ["success" => $success, "msg" => $msg, "url" => $url, "timer" => 3]); } public function error($msg, $url = '', $data = false) { if (request()->ajax()) { return $this->ajaxError($msg, $data); } return $this->callback(false, $msg, $url); } public function success($msg, $url = '', $data = false) { if (request()->ajax()) { return $this->ajaxSuccess($msg, $data); } return $this->callback(true, $msg, $url); } public function ajaxResponse($response) { return response()->json($response); } public function ajaxSuccess($msg = "", $data = false) { $response = [ "msg" => $msg, "status" => 1, "data" => $data ]; return $this->ajaxResponse($response); } public function ajaxError($msg = "", $data = false) { $response = [ "msg" => $msg, "status" => 0, "data" => $data ]; return $this->ajaxResponse($response); } public function list(Request $request) { $data = $this->model->paginate(10); return view($this->bladePath . ".index", compact("data")); } public function create(FormBuilder $formBuilder) { $form = $formBuilder->create($this->formClass, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/store") ]); return view($this->bladePath . ".create", compact("form")); } public function store(Request $request) { try { $data = (new CommonModel())->setTable($this->model->getTable())->filterRequestColumns($request, ["id"]); dd($data); $model = $this->model->create($data); $this->stored($model); $url = $request->_previous ? $request->_previous : url($this->urlPrefix); return $this->success("新增成功", $url, $model); } catch (\Exception $exception) { return $this->error("新增失败:" . $exception->getMessage()); } } public function stored($model) { // } public function edit($id = null, Request $request, FormBuilder $formBuilder) { $vo = $this->model->find($id ?: $request->id); $form = $formBuilder->create($this->formClass, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/update/" . $vo->id), "class" => "form form-horizontal validate-form", "model" => $vo ]); $form->add("_previous", "hidden", ["value" => (url()->previous())]); return view($this->bladePath . ".create", compact("form")); } public function update($id = null, Request $request) { try { $data = (new CommonModel())->setTable($this->model->getTable())->filterRequestColumns($request, ["id"]); $model = $this->model->find($id ?: $request->id); $model->update($data); $this->updated($model); $url = $request->_previous ? $request->_previous : url($this->urlPrefix); return $this->success("修改成功", $url, $model); } catch (\Exception $exception) { return $this->error("修改失败:" . $exception->getMessage()); } } public function updated($model) { // } public function delete(Request $request) { try { $model = $this->model->find($request->id); $model->delete(); $this->deleted($model); return $this->success("删除成功"); } catch (\Exception $exception) { return $this->error("删除失败:" . $exception->getMessage()); } } public function deleted($model) { // } public function upload(Request $request) { $file = $request->file("file"); $original_name = $file->getClientOriginalName(); $extension = last(explode(".", $original_name)); if (!in_array($extension, ["mp4","jpg", "jpeg", "gif", "png", "bmp", "pdf", "ppt", "pptx", "doc", "docx", "xls", "xlsx", "zip", "rar"])) { return response('不正确的文件格式', 403); } $save_folder = $request->folder ? $request->folder : "public"; if (!is_dir(Storage::path($save_folder))) { Storage::makeDirectory($save_folder); } $name = uniqid() . "." . $extension; $store_result = $file->storeAs($save_folder, $name); $upload = new Uploads(); $upload->original_name = $original_name; $upload->folder = $save_folder; $upload->name = $name; $upload->extension = $extension; $upload->creator_type = get_class(Auth::guard("admin")->user()); $upload->creator_id = Auth::guard("admin")->id(); $upload->size = Storage::size($save_folder . "/" . $name); $upload->save(); return $this->ajaxResponse($upload); } }