id; $this->tags[$tagIndex] = $tag; } public function parentComponentTagRemoved($tag) { $this->tags = collect($this->tags) ->filter(fn ($curTag) => $curTag['name'] !== $tag) ->all(); } public function draft() { $this->state = 'archived'; $this->publish(); } public function preview() { $this->state = 'archived'; $this->publish(); } public function publish() { $this->validate(); $post = new BlogPost(); $post->image = $this->image->store('blog_posts', 'public'); $post->state = $this->state; $post->title = $this->title; $post->description = $this->description; $post->youtube_url = $this->videoUrl; $post->save(); $tagsIds = collect($this->tags)->map(fn ($curTag) => $curTag['id']); $post->tags()->attach($tagsIds); $user = Auth::user(); $user->author_of_blog_post()->attach($post->id); return redirect()->route('blog_post.show', $post->id); } protected function rules() { return [ 'image' => 'required|image|max:2048', 'state' => 'required|in:active,archived', 'description' => 'required|min:3', 'videoUrl' => 'nullable|url|max:2048', ]; } }