Skip to main content
CourseFlix

PHP Symfony 4 API Platform + React.js Full Stack Masterclass

19h 24m 17s
English
Paid

Have you ever wanted to advance your PHP skills to the next level? Maybe you have some prior PHP experience but you never had a change to work with a framework? Or you are new to PHP at all? It does not matter! You can take this course to give your PHP projects a fresh start! In modern world, sooner or later, as a web developer you will have to create a API and a frontend application in React.JS or any other JS framework out there. It's just a must have these days for any professional web developer!

This is where I can help you. Take this course to learn how to create robust APIs in PHP, using Symfony Framework 4 and API Platform. You will not believe how easy and instant it could be! I'll take you step by step during the whole process, from creating your own robust API to making a modern React.JS application using Redux, Redux-Form and all the other tools that you just need to know to get a job these days! You will be creating a Blog application, starting with the API in Symfony API Platform, and then a complete React+Redux frontend app. We will also configure an administration panel for managing the platform. Both Windows and MacOS are supported (I'll show you how to install and configure PHP and Node.js on both)

What will you learn about Symfony and API Platform?

You will learn how to create Symfony controllers and work with routing

You will learn how to represent your database tables as objects in Doctrine

You will see how you can quickly convert your Doctrine model to an API Resource

You will learn how to paginate, filter and sort your collections

You will see how to send an e-mail

You will learn everything about Authentication (user sign-up, sign-in, including account confirmation through e-mail)

You will understand everything about Authorization (User roles, privileges, restricting access)

You will know how to handle file uploads through REST API

You will learn how to log errors

You will learn both unit testing (PHPUnit) and functional testing (Behat)

You will know how to customize and extend the built-in operations that API Platform provide

Data validation and serialization/deserialization

What will you learn about React.js?

How to configure routes for your app using React Router

How to handle state with Redux

How to create great forms using Redux Forms

Communicating with the API using Thunk Middleware

After finishing this course you will be able to confidently create your own complicated APIs in Symfony using API Platform and create a SPA application using React.js!

What you'll learn:

  • You will know how to create a robust APIs in Symfony 4 using API Platform
  • You will understand the basics of Symfony Framework
  • You will know how to create a pretty complicated ReactJS application that works with API Platform (or any API!)

Requirements:

  • Any code editor
  • Some previous PHP exposure would be very useful (this course does not teach PHP from the very basics!)
  • JavaScript basics for the React part

About the Author: Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 220 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 220 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Introduction
All Course Lessons (220)
#Lesson TitleDurationAccess
1
Introduction Demo
06:46
2
Course outline and how to make most of this course! (PLEASE WATCH!)
09:29
3
Tools (required/optional) overview
08:36
4
Installing PHP and Composer on Windows
05:50
5
Installing PHP and Composer on Mac
01:52
6
Installing Visual Studio Code
01:19
7
Namespaces
04:43
8
Class Fields and Methods
05:47
9
Method & Field Visibility
05:14
10
Inheritance
10:42
11
Abstract Classes
03:40
12
Interfaces
11:16
13
Typed Arguments & Function Return Types
12:29
14
Anonymous Functions (Closures)
04:49
15
Reflection API (Reverse-Engineer Classes, Methods, Functions)
05:05
16
Dependency Injection (In Practice)
05:47
17
Simple Service Container (Hands-On Coding!)
12:30
18
Service Autowiring Implementation Part 1
10:52
19
Service Autowiring Implementation Part 2
11:25
20
Annotations and Kernel Part 1
08:05
21
Annotations and Kernel Part 2
12:41
22
Creating new Symfony project
01:25
23
Routing annotations in controllers
02:47
24
Routing - route parameter wildcards
05:33
25
Routing - default parameter values
02:24
26
Routing - generating urls using route names
01:58
27
AbstractController, Request, Response
04:39
28
Installing ORM, maker, configuring database
02:10
29
Generating first Entity
03:17
30
Entity explained
02:31
31
Migration - modifying database structure
02:59
32
Persisting entities and serializing data
05:15
33
Fetching objects using repositories
03:22
34
ParamConverter - type hinting actions for automatic fetching of entities
06:00
35
Deleting entities
03:40
36
Doctrine Fixtures - seeding fake data
04:52
37
Admin panel introduction - EasyAdmin
03:15
38
Install API Platform and create the first resource
06:20
39
Generate User and Comment entity
02:19
40
ManyToOne relation and migration
09:13
41
Fixtures with references (for relations)
05:34
42
Password encoding in fixtures
04:02
43
Generate fake data in fixtures using Faker
07:56
44
BlogPost with Comment relation and fixtures
04:45
45
Built-in API Platform operations
05:42
46
Disabling operations
03:13
47
Introduction to serialization/deserialization
04:34
48
Serialization groups (controlling which properties are serialized)
02:16
49
EventSubscriber (hashing password)
06:51
50
Validator and validation constraints
04:44
51
Validation using regular expressions
04:30
52
Virtual property (not persisted to database)
02:58
53
Validating uniqueness of fields (username, email)
02:03
54
JWT Tokens introduction
05:26
55
Preparing JWT token library and keys
03:25
56
Configuring UserProvider
04:25
57
Firewall configuration
08:39
58
JSON login configuration and Guard Authentication explained
06:11
59
Authentication final configuration and first login using JWT token
05:43
60
Using is_granted() to control access to operations
02:56
61
BlogPost validation on POST
06:17
62
Setting author of BlogPost automatically (EventSubscriber)
08:16
63
Making sure only owner of BlogPost can modify it (PUT)
06:08
64
Controlling which properties can be changed (no username change)
06:45
65
Hasing password on User changes (PUT) - with Events
07:08
66
Comment resource operations (POST/PUT)
05:09
67
More randomness in fixtures
07:23
68
Setting author automatically (EventSubscriber) - using generic Interface
05:59
69
Setting published date automatically (EventSubscriber)
07:11
70
API subresources
05:20
71
Controlling how deep relations are serialized
07:44
72
Embedding Author resource inside BlogPost
04:10
73
Adding user role field with migration
05:48
74
User role fixtures
09:27
75
Defining role hierarchy
01:41
76
Verifying only users with specific role can POST resources
09:44
77
Different User view for admins (different serialization of all User entities)
09:21
78
Verifying only admin can see all User's email
03:03
79
User can view his full profile (including email and roles) - custom Normalizer
11:17
80
Verifying only the profile owner can see all properties
01:26
81
Disabling password hashing for PUT operation
05:53
82
Configuring custom operation for password reset in User
02:21
83
Creating custom Action class
10:32
84
Implementing custom PasswordReset action
08:36
85
Invalidating JWT tokens after password reset
11:18
86
User enabled property migration and fixtures
05:17
87
Implementing UserChecker to verify if account is enabled
03:51
88
Secure confirmation token generation
05:43
89
Generating confirmation token when user signs-up
04:35
90
UserConfirmation custom API Resource
03:36
91
UserConfirmation EventSubscriber
06:39
92
Verifying Confirmation Token endpoint
02:49
93
Install and configure Swift Mailer
03:50
94
Sending a test e-mail through Gmail
02:18
95
Refactoring UserConfirmation and Mailer into services
08:26
96
Traditional (non API) account confirmation route (for e-mail)
04:57
97
Verifying confirmation link received in e-mail
02:06
98
Install and configure uploading library
04:04
99
Image entity with migration and @Uploadable annotation
05:13
100
API Resource for Image entity
02:49
101
Implementing custom Action for upload
05:51
102
Creating Form for file upload
05:38
103
Assigning Image to BlogPost (ManyToMany relation)
04:00
104
Verifying assigning Image to BlogPost, embedding Image inside BlogPost
04:22
105
Configuring default collection sorting order
03:34
106
Search filter
06:40
107
Date filter
04:32
108
Range filter
02:06
109
Sorting filter
04:26
110
Filtering by nested properties
02:04
111
Property filter
03:00
112
Configuring collection pagination
06:07
113
Configuring collection pagination part 2
04:36
114
Partial pagination (performance gain)
01:46
115
Empty request body for POST/PUT requests problem
02:58
116
Handling empty request body
06:25
117
Fixing validation groups
01:57
118
Handling business logic exceptions
03:51
119
Installing Monolog library for application logging
07:56
120
Defining custom logging channel
04:32
121
Logging to separate files per channel
02:42
122
Production configuration for logger explained
03:39
123
EasyAdmin basic built-in features
07:02
124
Fixing empty body subscriber for form submittal
04:18
125
Custom Resource controller, customizing saving and updating an Entity
08:21
126
Image upload in admin panel
03:58
127
Custom page for individual BlogPost
05:27
128
Securing Admin panel area
06:07
129
Installing PHPUnit and writing first basic unit test
07:06
130
Testing EventSubscriber static configuration
04:27
131
Mocks (stubs) Part 1 - Mocking dependencies, Entities
05:32
132
Mocks (stubs) Part 2 - Mocking dependencies, Entites
05:10
133
Event class Mock, extracting repeated mock factory code
03:29
134
Parameters for mocks
04:50
135
Full test for AuthoredEntitySubscriber
06:38
136
Data providers in tests (using many data sets in 1 test case)
04:43
137
Finding potential errors using unit tests (null Token example)
05:46
138
Installing Behat & all extensions, first suite run
03:00
139
Configuring Behat
04:52
140
FeatureContext - creating database schema for each feature
08:26
141
First blog post test scenario
05:50
142
Testing protected URLs
07:05
143
Validating returned JSON using patterns (not matching exact values)
06:32
144
Looking for errors and issues using functional tests
03:11
145
Finding a comment problem
06:28
146
Custom error listener
13:06
147
Image upload feature
06:21
148
Working image upload functional test
02:41
149
Testing assigning Images to BlogPost, full suite run
04:50
150
Installing node & npm on Windows
01:19
151
Installing node & npm on MacOS
01:01
152
Installing dependencies and creating main index.js
03:06
153
Creating store, using Provider, Router and components
05:45
154
BlogPostList empty component, App as a container component
02:41
155
BlogPostContainer, using key for list of elements
06:19
156
Redux: actions, reducer, mapping state and dispatch to props 1
07:02
157
Redux: actions, reducer, mapping state and dispatch to props 2
04:36
158
Adding BlogPost (dummy action), Reducer explained
04:29
159
Making API requests with Superagent
05:00
160
Thunk Redux Middleware
09:19
161
Header component (navigation)
03:31
162
Loading indicator when making API requests
03:42
163
Formatting BlogPost list, formatting time (timeago.js)
03:32
164
Route with parameter - individual BlogPost
04:07
165
Fetching BlogPost from API
06:28
166
ComponentWillUnmount lifecycle method
04:42
167
BlogPost component - API changes
02:44
168
Spinner and Message components (loading state, simple message)
05:36
169
CommentListContainer component
10:31
170
CommentList reducer
03:45
171
Rendering comments
02:59
172
Introducing redux-form
02:24
173
Render redux form component
06:28
174
Adding redux-form reducer
02:10
175
Submitting Form to an API endpoint
03:57
176
Storing JWT token in LocalStorage, Token Middleware
03:15
177
Token Middleware and JWT authentication plugin 1
07:11
178
Token Middleware and JWT authentication plugin 2
06:06
179
Reading token in App component constructor
06:30
180
Redux Form submission, handling login errors
03:14
181
Checking whether user is authenticated (in Header component)
03:22
182
Fetching user profile through API
06:20
183
Rendering signed-in username in Header
07:43
184
Fetching user profile on page refresh
05:36
185
Create a redux-form for Comment posting
04:41
186
Redux-form submitting state simulation
02:27
187
Fully working CommentForm
04:21
188
Displaying errors in redux-form
03:43
189
Parsing API errors (validation constraint messages from API)
04:12
190
Animations - animated comment adding
05:47
191
Logout functionality (resetting stored JWT token)
06:20
192
Logging out user when token expires
05:57
193
Logging out user when he submits an expired token (401)
03:03
194
Paginator component
03:47
195
Paginator component - showing current page
02:47
196
Fetching blog post collection on page change
07:10
197
Query parameter based pagination (page in route parameter)
04:34
198
Pagination - previous/next buttons
09:27
199
Modify API - missing User embedded data on new Comment
01:48
200
LoadMore component - fetching next comments (different way of pagination)
08:47
201
Append new comments inside reducer
02:49
202
Registration form
05:32
203
Registration action creators and form validation
10:22
204
ConfirmationToken - modify e-mail to contain token, not only link
03:15
205
RegistrationContainer - 2 step registration process
03:52
206
Showing ConfirmationToken form on successful account creation
05:21
207
Keeping state of registration/confirmation process
05:17
208
Registration/Confirmation process, with redirect timer
08:17
209
BlogPost form for creating posts and user permissions
05:20
210
Functional BlogPost form
05:14
211
ImageUpload component (styling the file input)
06:32
212
Uploading images - upload request
09:50
213
ImageBrowser (preview uploaded images)
05:05
214
A new reducer for BlogPostForm
04:06
215
Clear the images when BlogPostForm unmounts
07:17
216
DELETE operation on Image (API Changes)
04:11
217
ImageBrowser animations
03:38
218
Remove button on ImageBrowser
03:58
219
Remove button on ImageBrowser sending DELETE request
03:16
220
Locking all buttons during Image upload/removal
04:47
Unlock unlimited learning

Get instant access to all 219 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Course content

220 lessons · 19h 24m 17s
Show all 220 lessons
  1. 1 Introduction 06:46
  2. 2 Course outline and how to make most of this course! (PLEASE WATCH!) 09:29
  3. 3 Tools (required/optional) overview 08:36
  4. 4 Installing PHP and Composer on Windows 05:50
  5. 5 Installing PHP and Composer on Mac 01:52
  6. 6 Installing Visual Studio Code 01:19
  7. 7 Namespaces 04:43
  8. 8 Class Fields and Methods 05:47
  9. 9 Method & Field Visibility 05:14
  10. 10 Inheritance 10:42
  11. 11 Abstract Classes 03:40
  12. 12 Interfaces 11:16
  13. 13 Typed Arguments & Function Return Types 12:29
  14. 14 Anonymous Functions (Closures) 04:49
  15. 15 Reflection API (Reverse-Engineer Classes, Methods, Functions) 05:05
  16. 16 Dependency Injection (In Practice) 05:47
  17. 17 Simple Service Container (Hands-On Coding!) 12:30
  18. 18 Service Autowiring Implementation Part 1 10:52
  19. 19 Service Autowiring Implementation Part 2 11:25
  20. 20 Annotations and Kernel Part 1 08:05
  21. 21 Annotations and Kernel Part 2 12:41
  22. 22 Creating new Symfony project 01:25
  23. 23 Routing annotations in controllers 02:47
  24. 24 Routing - route parameter wildcards 05:33
  25. 25 Routing - default parameter values 02:24
  26. 26 Routing - generating urls using route names 01:58
  27. 27 AbstractController, Request, Response 04:39
  28. 28 Installing ORM, maker, configuring database 02:10
  29. 29 Generating first Entity 03:17
  30. 30 Entity explained 02:31
  31. 31 Migration - modifying database structure 02:59
  32. 32 Persisting entities and serializing data 05:15
  33. 33 Fetching objects using repositories 03:22
  34. 34 ParamConverter - type hinting actions for automatic fetching of entities 06:00
  35. 35 Deleting entities 03:40
  36. 36 Doctrine Fixtures - seeding fake data 04:52
  37. 37 Admin panel introduction - EasyAdmin 03:15
  38. 38 Install API Platform and create the first resource 06:20
  39. 39 Generate User and Comment entity 02:19
  40. 40 ManyToOne relation and migration 09:13
  41. 41 Fixtures with references (for relations) 05:34
  42. 42 Password encoding in fixtures 04:02
  43. 43 Generate fake data in fixtures using Faker 07:56
  44. 44 BlogPost with Comment relation and fixtures 04:45
  45. 45 Built-in API Platform operations 05:42
  46. 46 Disabling operations 03:13
  47. 47 Introduction to serialization/deserialization 04:34
  48. 48 Serialization groups (controlling which properties are serialized) 02:16
  49. 49 EventSubscriber (hashing password) 06:51
  50. 50 Validator and validation constraints 04:44
  51. 51 Validation using regular expressions 04:30
  52. 52 Virtual property (not persisted to database) 02:58
  53. 53 Validating uniqueness of fields (username, email) 02:03
  54. 54 JWT Tokens introduction 05:26
  55. 55 Preparing JWT token library and keys 03:25
  56. 56 Configuring UserProvider 04:25
  57. 57 Firewall configuration 08:39
  58. 58 JSON login configuration and Guard Authentication explained 06:11
  59. 59 Authentication final configuration and first login using JWT token 05:43
  60. 60 Using is_granted() to control access to operations 02:56
  61. 61 BlogPost validation on POST 06:17
  62. 62 Setting author of BlogPost automatically (EventSubscriber) 08:16
  63. 63 Making sure only owner of BlogPost can modify it (PUT) 06:08
  64. 64 Controlling which properties can be changed (no username change) 06:45
  65. 65 Hasing password on User changes (PUT) - with Events 07:08
  66. 66 Comment resource operations (POST/PUT) 05:09
  67. 67 More randomness in fixtures 07:23
  68. 68 Setting author automatically (EventSubscriber) - using generic Interface 05:59
  69. 69 Setting published date automatically (EventSubscriber) 07:11
  70. 70 API subresources 05:20
  71. 71 Controlling how deep relations are serialized 07:44
  72. 72 Embedding Author resource inside BlogPost 04:10
  73. 73 Adding user role field with migration 05:48
  74. 74 User role fixtures 09:27
  75. 75 Defining role hierarchy 01:41
  76. 76 Verifying only users with specific role can POST resources 09:44
  77. 77 Different User view for admins (different serialization of all User entities) 09:21
  78. 78 Verifying only admin can see all User's email 03:03
  79. 79 User can view his full profile (including email and roles) - custom Normalizer 11:17
  80. 80 Verifying only the profile owner can see all properties 01:26
  81. 81 Disabling password hashing for PUT operation 05:53
  82. 82 Configuring custom operation for password reset in User 02:21
  83. 83 Creating custom Action class 10:32
  84. 84 Implementing custom PasswordReset action 08:36
  85. 85 Invalidating JWT tokens after password reset 11:18
  86. 86 User enabled property migration and fixtures 05:17
  87. 87 Implementing UserChecker to verify if account is enabled 03:51
  88. 88 Secure confirmation token generation 05:43
  89. 89 Generating confirmation token when user signs-up 04:35
  90. 90 UserConfirmation custom API Resource 03:36
  91. 91 UserConfirmation EventSubscriber 06:39
  92. 92 Verifying Confirmation Token endpoint 02:49
  93. 93 Install and configure Swift Mailer 03:50
  94. 94 Sending a test e-mail through Gmail 02:18
  95. 95 Refactoring UserConfirmation and Mailer into services 08:26
  96. 96 Traditional (non API) account confirmation route (for e-mail) 04:57
  97. 97 Verifying confirmation link received in e-mail 02:06
  98. 98 Install and configure uploading library 04:04
  99. 99 Image entity with migration and @Uploadable annotation 05:13
  100. 100 API Resource for Image entity 02:49
  101. 101 Implementing custom Action for upload 05:51
  102. 102 Creating Form for file upload 05:38
  103. 103 Assigning Image to BlogPost (ManyToMany relation) 04:00
  104. 104 Verifying assigning Image to BlogPost, embedding Image inside BlogPost 04:22
  105. 105 Configuring default collection sorting order 03:34
  106. 106 Search filter 06:40
  107. 107 Date filter 04:32
  108. 108 Range filter 02:06
  109. 109 Sorting filter 04:26
  110. 110 Filtering by nested properties 02:04
  111. 111 Property filter 03:00
  112. 112 Configuring collection pagination 06:07
  113. 113 Configuring collection pagination part 2 04:36
  114. 114 Partial pagination (performance gain) 01:46
  115. 115 Empty request body for POST/PUT requests problem 02:58
  116. 116 Handling empty request body 06:25
  117. 117 Fixing validation groups 01:57
  118. 118 Handling business logic exceptions 03:51
  119. 119 Installing Monolog library for application logging 07:56
  120. 120 Defining custom logging channel 04:32
  121. 121 Logging to separate files per channel 02:42
  122. 122 Production configuration for logger explained 03:39
  123. 123 EasyAdmin basic built-in features 07:02
  124. 124 Fixing empty body subscriber for form submittal 04:18
  125. 125 Custom Resource controller, customizing saving and updating an Entity 08:21
  126. 126 Image upload in admin panel 03:58
  127. 127 Custom page for individual BlogPost 05:27
  128. 128 Securing Admin panel area 06:07
  129. 129 Installing PHPUnit and writing first basic unit test 07:06
  130. 130 Testing EventSubscriber static configuration 04:27
  131. 131 Mocks (stubs) Part 1 - Mocking dependencies, Entities 05:32
  132. 132 Mocks (stubs) Part 2 - Mocking dependencies, Entites 05:10
  133. 133 Event class Mock, extracting repeated mock factory code 03:29
  134. 134 Parameters for mocks 04:50
  135. 135 Full test for AuthoredEntitySubscriber 06:38
  136. 136 Data providers in tests (using many data sets in 1 test case) 04:43
  137. 137 Finding potential errors using unit tests (null Token example) 05:46
  138. 138 Installing Behat & all extensions, first suite run 03:00
  139. 139 Configuring Behat 04:52
  140. 140 FeatureContext - creating database schema for each feature 08:26
  141. 141 First blog post test scenario 05:50
  142. 142 Testing protected URLs 07:05
  143. 143 Validating returned JSON using patterns (not matching exact values) 06:32
  144. 144 Looking for errors and issues using functional tests 03:11
  145. 145 Finding a comment problem 06:28
  146. 146 Custom error listener 13:06
  147. 147 Image upload feature 06:21
  148. 148 Working image upload functional test 02:41
  149. 149 Testing assigning Images to BlogPost, full suite run 04:50
  150. 150 Installing node & npm on Windows 01:19
  151. 151 Installing node & npm on MacOS 01:01
  152. 152 Installing dependencies and creating main index.js 03:06
  153. 153 Creating store, using Provider, Router and components 05:45
  154. 154 BlogPostList empty component, App as a container component 02:41
  155. 155 BlogPostContainer, using key for list of elements 06:19
  156. 156 Redux: actions, reducer, mapping state and dispatch to props 1 07:02
  157. 157 Redux: actions, reducer, mapping state and dispatch to props 2 04:36
  158. 158 Adding BlogPost (dummy action), Reducer explained 04:29
  159. 159 Making API requests with Superagent 05:00
  160. 160 Thunk Redux Middleware 09:19
  161. 161 Header component (navigation) 03:31
  162. 162 Loading indicator when making API requests 03:42
  163. 163 Formatting BlogPost list, formatting time (timeago.js) 03:32
  164. 164 Route with parameter - individual BlogPost 04:07
  165. 165 Fetching BlogPost from API 06:28
  166. 166 ComponentWillUnmount lifecycle method 04:42
  167. 167 BlogPost component - API changes 02:44
  168. 168 Spinner and Message components (loading state, simple message) 05:36
  169. 169 CommentListContainer component 10:31
  170. 170 CommentList reducer 03:45
  171. 171 Rendering comments 02:59
  172. 172 Introducing redux-form 02:24
  173. 173 Render redux form component 06:28
  174. 174 Adding redux-form reducer 02:10
  175. 175 Submitting Form to an API endpoint 03:57
  176. 176 Storing JWT token in LocalStorage, Token Middleware 03:15
  177. 177 Token Middleware and JWT authentication plugin 1 07:11
  178. 178 Token Middleware and JWT authentication plugin 2 06:06
  179. 179 Reading token in App component constructor 06:30
  180. 180 Redux Form submission, handling login errors 03:14
  181. 181 Checking whether user is authenticated (in Header component) 03:22
  182. 182 Fetching user profile through API 06:20
  183. 183 Rendering signed-in username in Header 07:43
  184. 184 Fetching user profile on page refresh 05:36
  185. 185 Create a redux-form for Comment posting 04:41
  186. 186 Redux-form submitting state simulation 02:27
  187. 187 Fully working CommentForm 04:21
  188. 188 Displaying errors in redux-form 03:43
  189. 189 Parsing API errors (validation constraint messages from API) 04:12
  190. 190 Animations - animated comment adding 05:47
  191. 191 Logout functionality (resetting stored JWT token) 06:20
  192. 192 Logging out user when token expires 05:57
  193. 193 Logging out user when he submits an expired token (401) 03:03
  194. 194 Paginator component 03:47
  195. 195 Paginator component - showing current page 02:47
  196. 196 Fetching blog post collection on page change 07:10
  197. 197 Query parameter based pagination (page in route parameter) 04:34
  198. 198 Pagination - previous/next buttons 09:27
  199. 199 Modify API - missing User embedded data on new Comment 01:48
  200. 200 LoadMore component - fetching next comments (different way of pagination) 08:47
  201. 201 Append new comments inside reducer 02:49
  202. 202 Registration form 05:32
  203. 203 Registration action creators and form validation 10:22
  204. 204 ConfirmationToken - modify e-mail to contain token, not only link 03:15
  205. 205 RegistrationContainer - 2 step registration process 03:52
  206. 206 Showing ConfirmationToken form on successful account creation 05:21
  207. 207 Keeping state of registration/confirmation process 05:17
  208. 208 Registration/Confirmation process, with redirect timer 08:17
  209. 209 BlogPost form for creating posts and user permissions 05:20
  210. 210 Functional BlogPost form 05:14
  211. 211 ImageUpload component (styling the file input) 06:32
  212. 212 Uploading images - upload request 09:50
  213. 213 ImageBrowser (preview uploaded images) 05:05
  214. 214 A new reducer for BlogPostForm 04:06
  215. 215 Clear the images when BlogPostForm unmounts 07:17
  216. 216 DELETE operation on Image (API Changes) 04:11
  217. 217 ImageBrowser animations 03:38
  218. 218 Remove button on ImageBrowser 03:58
  219. 219 Remove button on ImageBrowser sending DELETE request 03:16
  220. 220 Locking all buttons during Image upload/removal 04:47

Related courses

Frequently asked questions

What is PHP Symfony 4 API Platform + React.js Full Stack Masterclass about?
Have you ever wanted to advance your PHP skills to the next level? Maybe you have some prior PHP experience but you never had a change to work with a framework? Or you are new to PHP at all? It does not matter! You can take this course to…
Who teaches PHP Symfony 4 API Platform + React.js Full Stack Masterclass?
PHP Symfony 4 API Platform + React.js Full Stack Masterclass is taught by Udemy. You can find more courses by this instructor on the corresponding source page.
How long is PHP Symfony 4 API Platform + React.js Full Stack Masterclass?
PHP Symfony 4 API Platform + React.js Full Stack Masterclass contains 220 lessons with a total runtime of 19 hours 24 minutes. All lessons are available to watch online at your own pace.
Is PHP Symfony 4 API Platform + React.js Full Stack Masterclass free to watch?
PHP Symfony 4 API Platform + React.js Full Stack Masterclass is part of CourseFlix's premium catalog. A CourseFlix subscription unlocks the full video player; the course description, table of contents, and preview information are available to everyone.
Where can I watch PHP Symfony 4 API Platform + React.js Full Stack Masterclass online?
PHP Symfony 4 API Platform + React.js Full Stack Masterclass is available to watch online on CourseFlix at https://courseflix.net/course/php-symfony-4-api-platform-react-js-full-stack-masterclass. The page hosts every lesson with the integrated video player; no download is required.