This episode is for members only

Sign up to access "Build a Forum with Inertia and Laravel" right now.

Get started
Already a member? Sign in to continue
Playing
42. Editing posts

Episodes

0%
Your progress
  • Total: 6h 54m
  • Played: 0m
  • Remaining: 6h 54m
Join or sign in to track your progress
01. Introduction and demo
6m 59s
0%
02. Getting set up
10m 36s
0%
03. Modifying registration for usernames
7m 15s
0%
04. Figuring out the forum layout
5m 57s
0%
05. Creating and listing topics
9m 15s
0%
06. Basic discussion listing
13m 33s
0%
07. Pinning discussions
4m 1s
0%
08. Tackling pagination in Inertia
8m 23s
0%
09. Customising pagination text in Laravel
52s
0%
10. Showing a discussion
6m 4s
0%
11. Setting up discussion posts
5m 53s
0%
12. Listing through discussion posts
5m 28s
0%
13. Adding more data to posts
8m 24s
0%
14. Adding pagination to posts
1m 35s
0%
15. Adding a post preview to discussions
4m 52s
0%
16. Adding the last reply to discussions
5m 54s
0%
17. Outputting discussion participants
8m 4s
0%
18. Limiting participants in the UI
5m 56s
0%
19. Ordering discussions by last post
4m 30s
0%
20. Handling deleted users
2m 31s
0%
21. Counting replies
8m 13s
0%
22. Building our first filter
8m 31s
0%
23. Highlighting current filters, and merging with pagination
5m 37s
0%
24. Adding auth specific filters
6m 40s
0%
25. Adding the topic filter
8m 18s
0%
26. Scaffolding the new discussion form
13m 29s
0%
27. Toggling the create discussion form
9m 2s
0%
28. Keeping form state
4m 59s
0%
29. Storing a new discussion
11m 29s
0%
30. Discussion validation and authorization
5m 1s
0%
31. Generating markdown for posts
8m 37s
0%
32. Toggling the markdown preview
7m 43s
0%
33. Fetching and displaying markdown
8m 6s
0%
34. Adding a markdown shortcut toolbar
5m 53s
0%
35. Dealing with SVG icons
7m 46s
0%
36. Creating the reply form
7m 48s
0%
37. Basic Inertia permission checking
6m 26s
0%
38. Creating replies to discussions
5m 37s
0%
39. Jumping to posts
11m 40s
0%
40. Automatically scrolling to posts
6m 18s
0%
41. Toggling post editing
7m 32s
0%
42. Editing posts
3m 36s
0%
43. Deleting posts
4m 21s
0%
44. Deleting discussions
6m 7s
0%
45. Setting up for best answers
7m 29s
0%
46. Toggling the best discussion answer
12m 14s
0%
47. Solved and unsolved filters
2m 23s
0%
48. Indexing discussions for search
8m 6s
0%
49. Searching discussions
12m 35s
0%
50. Debouncing search
2m 47s
0%
51. Adding mentionable functionality to forms
6m 32s
0%
52. Indexing users for mentioning
9m 9s
0%
53. Hooking up users for mentions
10m 10s
0%
54. Detecting and storing mentioned users
9m 54s
0%
55. Adding the mentioned filter
2m 26s
0%
56. Adding mentions to the markdown toolbar
1m 1s
0%
57. Adding mentions to the reply form
7m 21s
0%
58. Fixing up some unauthenticated state
1m 1s
0%
59. Fixing up post scrolling
1m 48s
0%
60. Reviewing SSR (Server-side rendering)
8m 20s
0%
61. Preventing parent posts from being deleted
2m 31s
0%
62. Improving solution marking
4m 9s
0%

Transcript

00:00
Now that we can toggle the edit functionality of each of these posts, let's hook this up to actually edit it. So over on the form that we just created in the last episode, let's go ahead and add in a submit prevent event handler and we'll hook this up to an edit post function inside of here.
00:20
So let's go ahead and create this function out just down here. And of course, what that's going to do is submit the edit form through with the body to the correct place. And that place is, of course, going to be another controller. So let's go ahead and make out a post patch controller and we'll go ahead and fill this in.
00:39
So let's go to our roots, first of all. Obviously, we need to be authenticated for this. So let's go ahead and set this as a patch request through to posts and then slash and then the post itself. So let's switch this to the post patch controller and we'll say post stop patch so we can reference it.
01:01
Now, we'll start out directly with the form request here, so let's go ahead and make out a request for this. That's going to be post patch request. And let's pull this directly into here, post patch request. And we'll call that request.
01:19
And of course, we're going to get the post in itself here. So over in the post patch request, pull the namespace in for post. We are going to authorize this. We already created that over in our post policy, the ability to edit.
01:32
So really easily, we can just do the same thing. Auth user can edit and this post that will nicely authorize that for us. So we know that we are not allowing anyone to edit anyone's posts. So for the rules, the body is just going to be the same.
01:48
It's just going to be required. And of course, we can change that globally as well. So now that we've got that authorization and validation done, let's edit this post. In this case, it really is as simple as just updating the original post from the request and the validated data.
02:07
So in our case, that's just going to be the body. And then we can just go ahead and return back. So we just see the updated data. OK, so we've got the request in there.
02:16
Let's go ahead and actually submit this through. So we're going to say edit form and patch. And we're going to go through to the posts and patch route. Really importantly here, we want to preserve the scroll of this because we don't want to bump the user up to the top of the page.
02:33
And then once this has been successful, we want to go ahead and set the editing value back to false because we want to hide the editing text area. OK, let's try this out. So we'll go ahead and edit this to something else. Hit edit.
02:50
And that looks like it didn't work. So let's just figure out what is going on here. And post dot patch. OK, yeah, of course.
02:57
So we actually need to pass the post through to this. So we obviously know which post we're editing. So we can access that through our props and we should be good. OK, let's try again.
03:09
So let's edit this. And that should close that off after a successful edit. And there we go. Inertia has automatically picked up the new data that's being sent through on this particular route.
03:20
And of course, that has properly edited that post out. And for editing, that's pretty much it. We can do anything now. We could add some code in here if we wanted to, and everything would be nicely updated because it's rendering out the markdown for this as we've already built out.
62 episodes6 hrs 54 mins

Overview

Ready to build a forum with Inertia and Laravel?

Why a forum? A forum touches a whole load of concepts that you'll use throughout your development career – particularly on the client-side, where we'll be doing most of the heavy lifting.

So, let's build a clean, modern forum with features like markdown support, code highlighting, advanced filtering, user mentions, full-text search, the ability to mark best answers, and more.

Alex Garrett-Smith
Alex Garrett-Smith
Hey, I'm the founder of Codecourse!

Comments

No comments, yet. Be the first to leave a comment.