diff --git a/app/Containers/Dashboard/Tasks/Posts/CreatePostTask.php b/app/Containers/Dashboard/Tasks/Posts/CreatePostTask.php index 93dc342..7bdeace 100644 --- a/app/Containers/Dashboard/Tasks/Posts/CreatePostTask.php +++ b/app/Containers/Dashboard/Tasks/Posts/CreatePostTask.php @@ -21,7 +21,20 @@ class CreatePostTask public function run(array $data): Post { $processedData = $this->postDataProcessor->processCreate($data); - return Post::create($processedData); + + $tags = $processedData['tags'] ?? null; + + // Удаляем теги из данных, так как они обрабатываются отдельно + unset($processedData['tags']); + + $post = Post::create($processedData); + + // Синхронизируем теги если они есть + if (!empty($tags) && is_array($tags)) { + $post->syncTags($tags); + } + + return $post; } /** diff --git a/app/Containers/Dashboard/Tasks/Posts/UpdatePostTask.php b/app/Containers/Dashboard/Tasks/Posts/UpdatePostTask.php index df5f2ca..8b34cea 100644 --- a/app/Containers/Dashboard/Tasks/Posts/UpdatePostTask.php +++ b/app/Containers/Dashboard/Tasks/Posts/UpdatePostTask.php @@ -24,9 +24,18 @@ class UpdatePostTask ...$post->toArray(), ...$data, ]); - + + $tags = $processedData['tags'] ?? null; + + unset($processedData['tags']); + $post->update($processedData); - + + // Синхронизируем теги если они есть + if (!empty($tags) && is_array($tags)) { + $post->syncTags($tags); + } + return $post->fresh(); } } diff --git a/app/Containers/Dashboard/UI/WEB/Controllers/PostController.php b/app/Containers/Dashboard/UI/WEB/Controllers/PostController.php index 59a1f0e..98491ea 100644 --- a/app/Containers/Dashboard/UI/WEB/Controllers/PostController.php +++ b/app/Containers/Dashboard/UI/WEB/Controllers/PostController.php @@ -67,12 +67,13 @@ class PostController extends Controller */ public function edit(Post $post): \Inertia\Response { - $post->load(['category', 'seo']); + $post->load(['category', 'seo', 'tags']); $formData = $this->getPostFormDataAction->run(); return Inertia::render('Dashboard/Posts/Edit', [ 'post' => [ ...$post->toArray(), + 'tags' => $post->tags->map(fn($tag) => ['id' => $tag->id, 'name' => $tag->name, 'slug' => $tag->slug]), 'status' => $post->status?->value ?? $post->status, 'publish_setting' => [ 'publish_after' => $post->publish_at !== null,