route()->getName()))[0]; } public function index(Request $request) { } public function edit(Request $request, $postId) { $resource = $this->getResource($request); $modelClass = $this->getModelClass($resource); $post = $modelClass::find($postId); $languages = app('SiteState')->languageTranslations; return view('admin.menu.posts.edit', [ 'adminRouteNamePrefix' => config('admin.route_name_prefix'), 'resource' => $resource, 'post' => $post, 'languages' => $languages ]); } public function create(Request $request) { } public function store(Request $request) { return $this->update($request, null); } public function update(Request $request, $postId) { $defaultLocale = config('app.locale'); $resource = $this->getResource($request); $modelClass = $this->getModelClass($resource); /** @var \App\Post $post */ if($postId) { $post = $modelClass::find($postId); } else { $post = app($modelClass); $translatableAttributes = $post->getTranslatableAttributes(); $translatableAttributeValues = $request->all($translatableAttributes); $translatableAttributeValues = collect($translatableAttributeValues)->map(function($translatableAttributeValue) use ($defaultLocale){ return $translatableAttributeValue[$defaultLocale]; }); $post = $modelClass::create(array_merge($translatableAttributeValues->toArray(), [ 'user_id' => Auth::id() ])); } // Post的可翻譯屬性 $translatableAttributes = $post->getTranslatableAttributes(); // 更新所有可翻譯的屬性 foreach ($translatableAttributes as $translatableAttribute) { $translations = $request->get($translatableAttribute); if($translations) { $this->updateAttributeTranslations($post, $translatableAttribute, $translations); } } $post->fill([ 'feature_image_id' => $request->get('feature_image_id') ]); $post->save(); return redirect(route(config('admin.route_name_prefix') . $resource . '.edit', [$resource => $post->id])); } public function show(Request $request) { } public function destroy(Request $request, $postId) { $resource = $this->getResource($request); $modelClass = $this->getModelClass($resource); $post = $modelClass::find($postId); $post->delete(); return back(); } }