Symfony Web Development Complete Guide: Beginner To Advanced

Master Symfony PHP framework: from theory, through simple crud app, up to creating an advanced Real Life Application

  • Robert Apollo
  • 4.13
  • (1231 reviews)
  • 24 hrs
  • 312 lectures
  • Udemy
Symfony Web Development Complete Guide: Beginner To Advanced

What you will learn?

  • You will learn Symfony 4 & 5 from theory to advanced level by creating real life projects
  • You will create two apps: simple crud app and an advanced video sharing service with PayPal integration, deployment to Heroku etc.
  • You will learn how to create multilevel nested categories tree in PHP
  • You will learn how to install Symfony
  • You will learn about Symfony configuration
  • You will learn about Symfony Flex
  • You will learn about HTTP processing workflow in Symfony framework
  • You will learn routes
  • You will learn controllers
  • You will learn views in Symfony using Twig
  • You will learn html forms in Symfony
  • You will learn Doctrine ORM (how to use database)
  • You will learn entities (models) in Symfony and relations between them
  • You will learn about service container & services in Symfony
  • You will learn dependency injection (autowiring in Symfony)
  • You will learn console command
  • You will learn how to create events and listeners
  • You will learn how to use sessions & cookies in Symfony
  • You will learn how to send emails
  • You will learn how to do translations in Symfony
  • You will learn about security concepts in Symfony (login, registration, etc.)
  • You will learn unit & functional testing
  • You will learn about debugging Symfony applications
  • You will learn about cache
  • You will learn how to use Redis for session and cache
  • You will learn about doctrine table inheritance in Symfony & polymorphic database queries
  • You will learn how to deploy a Symfony application to Heroku (make application online)
  • You will learn how to integrate PayPal with the Symfony application for making subscription billing
  • You will learn how to use external API (Vimeo api) and use it with the Symfony application
  • You will be able to create your own websites or web applications in Symfony framework
  • You will learn basics of RabbitMQ message broker
  • You will learn basics of Messenger Component
  • You will learn CQRS pattern - command query responsibility segregation
  • You will learn REST API with Symfony & API Platform

Your trainer

Robert Apollo

My name is Robert Apollo. I am a passionate full-stack web developer with many years of experience in web industry. I make dedicated internet applications and websites, as well as hybrid mobile applications, mainly for interactive agencies and individuals. I have extensive development experience in the PHP technology including strong architecture and coding skills. I love to work on complex and business-critical tasks.

Here on Udemy I publish premium tutorials on how to build modern web applications. My methodology is teaching through engineering and showing non-standard solutions. Currently I focus on PHP 7, Symfony, Laravel, web and hybrid mobile applications. I remotely cooperate with IT companies creating dedicated web applications and websites.

312 lessons

Easy to follow lectures and videos covering subject details.

24 hours

This course includes hours of video material. Watch on-demand, anytime, anywhere.

Certificate of Completion

You will earn a Certificate of Completion at the end of this course.

Course curriculum

  • Welcome to the course04:03
  • About Symfony02:08
  • Tools and requirements for students02:32
  • How to use the course01:47
  • Course applications overview04:04
  • Quick note about coding standards01:34
  • How to get helped00:26
  • Symfony 4 installation & requirements04:19
  • Symfony 4 configuration02:28
  • Installing libraries with Symfony Flex03:06
  • Request & response objects, HTTP processing workflow02:55
  • Before you start watching this section of the Symfony course00:44
  • Routes04:19
  • Controllers06:56
  • Views05:21
  • Entities (models)12:40
  • Service container & services - part 110:54
  • Service container & services - part202:38
  • Advanced routes03:47
  • Flash messages03:26
  • Cookies01:50
  • Session02:22
  • POST & GET data01:28
  • Custom error pages02:13
  • Handle exceptions00:47
  • Binding services to controllers01:20
  • More features in controllers05:20
  • Views - tags, filters, functions, tests, operators07:23
  • Views - genereate url's and escaping strings03:35
  • Views - global variables01:52
  • Views - Webpack Encore07:31
  • Views - using app variable01:29
  • Views - embed controllers in view03:33
  • Doctrine crud - create03:31
  • Doctrine crud - read02:24
  • Doctrine crud - update00:58
  • Doctrine crud - delete00:54
  • Doctrine raw queries01:04
  • Doctrine param converter01:22
  • Doctrine LifecycleCallbacks option02:23
  • Doctrine one-to-many & many-to-one relationships08:51
  • Doctrine database relationships - cascade remove ralated objects09:06
  • Doctrine one-to-one relationship04:18
  • Doctrine many-to-many self referencing relationship04:58
  • Doctrine Query Builder & eager loading04:27
  • Doctrine table inheritance mapping in Symfony (polymorphic queries) - part 104:03
  • Doctrine table inheritance mapping in Symfony (polymorphic queries) - part 207:31
  • Doctrine table inheritance mapping in Symfony (polymorphic queries) - part 317:24
  • Service parameters03:39
  • Service & autowiring by constructor injection and service arguments02:04
  • Service configuration02:35
  • Services - setter injection for optional dependencies04:26
  • Services - property injection01:47
  • Install composer package before the next lecture00:04
  • Services - lazy services02:17
  • Service - aliases03:09
  • Service - tags04:02
  • Service - dealing with different implementations of a service04:35
  • Services list01:11
  • Cache - basic usage04:27
  • Cache - tags05:28
  • Symfony console02:03
  • Use profiler tool in Symfony05:27
  • Environments vs kernels03:04
  • Deploy Symfony application03:08
  • Events & Listeners base concepts01:59
  • Create listener02:28
  • Dispatching events04:27
  • Create subscriber01:33
  • Subscriber - many events handled by one subscriber01:26
  • Subscriber - events priorities02:08
  • Form - create a class02:20
  • Form - render in view05:13
  • Form - themes01:51
  • Form - send01:29
  • Form - validation02:11
  • Form - events03:48
  • Form - fields not related to entity01:53
  • Form - upload files04:35
  • Email - install email package & send an email03:19
  • Email - spooling02:21
  • Email - functional testing03:25
  • Security - create user02:28
  • Security - register06:56
  • Security - login03:18
  • Security - logout01:37
  • Security - login & remember login state01:42
  • Security - csrf00:39
  • Security - use security checker00:18
  • Install expression-language package00:02
  • Security - authorization using annotations06:26
  • Security - authorization using configuration file01:18
  • Security - authorization using denyAccessUnlessGranted method01:17
  • Security - authorization in view files01:11
  • Security - authorization using voters02:14
  • Unit tests - install02:16
  • Unit tests - first unit test01:22
  • Functional tests - install01:32
  • Functional & unit tests - common assertions03:33
  • Functional tests - click links02:21
  • Functional tests - send a form02:00
  • Functional tests - data providers01:22
  • Functional tests - tests in isolation04:16
  • Tests - mock objects05:05
  • Tests - code coverage report01:56
  • Translations - install a package00:47
  • Translations - views03:30
  • Translations - controllers01:03
  • Translations - routes02:08
  • Translations - pluralization03:12
  • Before you start watching this section of the Symfony course00:48
  • Installation and creating virtual host (To-Do App)10:36
  • Move html template to Symfony (To-Do App)13:38
  • Create controller methods (To-Do App)08:08
  • Make entity in Symfony and use it (To-Do App)14:10
  • Display list of all tasks on the website (To-Do App)05:58
  • Switch status of a task (To-Do App)03:11
  • Delete a task (To-Do App)03:18
  • Before you start watching this section of the Symfony course00:53
  • Installation of Symfony 4 framework and moving template to it08:43
  • Continue with moving html template to Symfony05:54
  • Make template links working in Symfony - part 109:29
  • Make template links working in Symfony - part 212:46
  • Make template links working in Symfony - part 317:19
  • Make template links working in Symfony - part 406:59
  • Make template links working in Symfony - part 505:38
  • Install Webpack-Encore07:45
  • Category entity (model)17:05
  • Continue with Category fixtures - part 106:52
  • Continue with Category fixtures - part 205:12
  • Display main categories on website07:01
  • Create custom Twig filter04:06
  • Category class for front-end12:10
  • Build php array for nested categories04:18
  • Create nested categories on front-page09:18
  • Finish displaying categories on front-page17:02
  • Display categories in admin area - part 111:57
  • Display categories in admin area - part 206:05
  • Edit category in admin panel - part 105:04
  • Edit category in admin panel - part 209:44
  • Edit category in admin panel - part 302:21
  • Edit category in admin panel - part 407:08
  • Edit category in admin panel - part 506:09
  • Unit testing of categories - part 106:21
  • Unit testing of categories - part 213:38
  • Unit testing of categories - part 302:05
  • Unit testing of categories - part 403:45
  • Unit testing of categories - part 502:42
  • Functional testing of categories - part 105:21
  • Functional testing of categories - part 208:07
  • Functional testing of categories - part 303:10
  • Functional testing of categories - part 401:15
  • Create video fixtures03:44
  • Videos on front-page03:28
  • Pagination04:06
  • Display videos from child categories04:54
  • Sort videos04:14
  • Search results04:48
  • Functional testing of videos - part 102:02
  • Functional testing of videos - part 201:17
  • Functional testing of videos - part 301:10
  • Symfony login system - part 105:12
  • Symfony login system - part 204:02
  • Symfony login system - part 303:34
  • Symfony login system - part 404:47
  • User roles - part 103:08
  • User roles - part 201:11
  • User roles - part 301:14
  • Display links for users depending on login status - part 101:02
  • Display links for users depending on login status - part 202:44
  • Securing access to superadmin pages04:07
  • Check security01:23
  • User registration - part 103:00
  • User registration - part 207:59
  • User registration - part 305:30
  • Functional testing of categories - part 100:47
  • Functional testing of categories - part 202:20
  • Functional testing - accessing url's - part 102:34
  • Functional testing - accessing url's - part 203:06
  • Comments functionality06:50
  • Comment fixtures06:05
  • Dynamic value of comments number03:36
  • Display video details06:11
  • Display comment details04:05
  • Create new comment03:23
  • Functional testing03:03
  • Functional testing of comments03:40
  • Video entity03:39
  • Fixtures for videos03:19
  • Display likes/dislikes - part 102:27
  • Display likes/dislikes - part 216:57
  • Display likes/dislikes - part 304:42
  • Display likes/dislikes - part 402:47
  • Sort by likes - part 106:34
  • Sort by likes - part 202:49
  • Improve searching03:08
  • List videos in admin panel02:53
  • Improve functional testing01:53
  • Functional testing of likes - part 102:37
  • Functional testing of likes - part 200:48
  • Functional testing of likes - part 304:03
  • Code refactoring - part 103:10
  • Code refactoring - part 204:20
  • Subscription functionality - part 105:13
  • Subscription functionality - part 205:38
  • Admin profile06:51
  • Create video placeholder functionality09:21
  • Code refactoring03:53
  • Install Redis04:40
  • Register with proper subscription plan - part 103:39
  • Register with proper subscription plan - part 203:04
  • Register with proper subscription plan - part 302:59
  • Register with proper subscription plan - part 405:52
  • Enable cascade deletion of videos and comments02:33
  • Functional testing of subscription07:08
  • Delete admin profile01:34
  • Update admin profile - part 106:29
  • Update admin profile - part 206:21
  • Update admin profile - part 301:50
  • Update admin profile - part 402:48
  • Functional testing of user account03:20
  • Superadmin profile02:07
  • Functional test02:36
  • Upload video - part 109:00
  • Upload video - part 215:06
  • Upload video - part 303:10
  • Delete videos05:27
  • Categories select list in admin panel06:26
  • Change video for no members02:56
  • Remove novalidate attribute from html forms01:00
  • Upload videos to Vimeo27:52
  • Set duration for uploaded video04:19
  • Delete a comment03:32
  • Create listener in Symfony05:56
  • Send email on the event of adding a new video06:07
  • Functional testing01:23
  • Translations - part 104:50
  • Translations - part 204:19
  • Cache - part 104:44
  • Cache - part 203:25
  • Cache - part 301:30
  • Cache - part 405:59
  • Cache - part 502:07
  • Before you start watching this section of the Symfony course00:24
  • Heroku deployment - part 105:24
  • Heroku deployment - part 207:29
  • Attention!00:04
  • PayPal integration - part 104:12
  • PayPal integration - part 207:48
  • Introduction02:38
  • Install Symfony 5 and EasyAdmin bundle03:26
  • Install API Platform. Create entities using Schema Generator component of API Pl06:26
  • Customize EasyAdmin bundle06:15
  • Upload images through EasyAdmin08:20
  • Create related entities to manage through EasyAdmin08:00
  • Authentication and authorization to EasyAdmin app05:54
  • Create client JavaScript app to consume restAPI Platform app. GET API endpoint10:46
  • Create pagination09:11
  • Create a simple router01:09
  • Sort api query result using API Platform order filter08:40
  • Use exists filter of API Platform05:49
  • Use search filter of API Platform03:34
  • API Platform serialization groups (normalization and denormalization)07:18
  • Test structured json-ld data with Google tools05:56
  • The second javascript app to consume api. GET api request, disable pagination07:48
  • Add an offer. POST rest api request07:00
  • Delete an offer. DELETE rest api request07:34
  • Install & configure JWT authentication package08:51
  • Register a new user05:51
  • Login to application06:54
  • Create offers database relation for users, authorization03:13
  • Using API Platform event subscriber09:35
  • API Platform subresources (nested endpoints)05:04
  • Create listener class to produce additional data to the JWT response - user id05:18
  • Refactoring: make easier authorization. Use JavaScript Promises08:40
  • Handle 401 error status code when invalid JWT token03:42
  • Login automatically when invalid token05:21
  • Lost password functionality - part 103:09
  • Lost password functionality - part 205:09
  • Lost password functionality - part 306:50
  • Lost password functionality - part 406:49
  • Lost password functionality - part 503:49
  • Lost password functionality - part 602:05
  • Lost password functionality - part 709:49
  • Upload a file through REST API - part 104:57
  • Upload a file through REST API - part 207:14
  • Upload a file through REST API - part 303:32
  • Validation and errors handling04:06
  • Testing API with PhpUnit04:01
  • Fix GetOffers authorization01:59
  • API Platform Cache03:56
  • Deploy API Platform app to Heroku10:13
  • Fix "can not be converted to string" error01:46
  • Final thoughts01:04
  • Before you start watching this section of the Symfony course00:40
  • Symfony Messenger Component - introduction04:39
  • RabbitMQ basics11:05
  • CQRS - introduction02:44
  • Time for practice: simulate e-commerce system using Messages05:20
  • Install first Symfony app01:28
  • Create a controller for e-shop website07:26
  • Install Symfony Messenger Component & use it10:09
  • Dispatch CreadeOrder message05:36
  • Dispatch SignUpSms message04:36
  • Route messages to Doctrine transport08:46
  • Install RabbitMQ02:35
  • Create Symfony microservice and send messages to it13:44
  • Create another Symfony microservice and send messages to it04:16
  • Create two another Symfony microservices and send messages to them14:03
  • Where to go from here03:51
  • Upgrade Symfony from >=4.0 version01:03
  • New features in the next major Symfony release (5)04:11
Online Courses

Learning Symfony doesn't have to be hard. Here is our curated list of recommended online courses that will guide you step-by-step in the learning process.

Learn more
Books

Are you an avid book reader? Do you prefer paperback, or maybe Kindle version? Take a look at our curated list of Symfony related books and take yourskills to the next level.

Learn more
YouTube videos

The number of high-quality and free Symfony video tutorials is growing fast. Check this curated list of recommended videos - there is no excuse to stop learning.

Learn more