Introduction and Site Demo

In this video we are taking a tour of the Symfony 3 tutorial application that we will be building throughout the first part of this series. We're going to use this as our MVP (minimum viable product).

What I am hoping you take away from this series is the foundations of getting started when using Symfony 3 for a personal project. The scope of this application is small enough to go from idea to launch within a few short videos, but wide enough in potential to allow us to explore some of the more advanced ways we can work with, and learn Symfony as our project grows.

To begin with in this series we're going to make use of the following skills and technologies:

  • Controllers, routing, and Twig
  • Doctrine queries, results, and repositories
  • Pagination
  • Creating console commands
  • Forms, file uploads, and form theming
  • EasyAdminBundle
  • Event Listeners
  • Symfony Services
  • Bootstrap 3

What these foundations give us is the basis for more advanced and interesting activities. These will come in the follow on series, but to give you a quick teaser - Redis, RabbitMQ, and Caching to name but a few.

For now we have a bunch of things to cover to take our confidence in using the Symfony 3 framework up the next step.

The expected level of knowledge for this series is to have either completed the "Symfony 3 for Beginners" tutorial or to have an equivalent (or greater) level of experience. This means I won't be covering any of the topics covered in the previous series in as great a depth, but will refer you back to those videos where appropriate.

All of these topics when taken in isolation can be confusing, or even in some cases, slightly boring. When given some context they become much more enjoyable, and hopefully this series inspires you to dig deeper, experiment, and learn even more.

One thing to note - whilst the EasyAdminBundle provides a bunch of features that are both extremely cool and easy to enable / use, we will be making our lives that little bit harder by doing some things in a more manual fashion. This is entirely intentional as whilst EasyAdminBundle makes life ... ahem, incredibly easy for us, there are benefits to understanding how to do some of these things yourself.

With this in mind, when it comes to handling image uploads, we won't be using VichUploaderBundle. Instead, we will do this process by hand, learning a bunch of new skills along the way. Of course, once you understand this process, feel free to bypass this and go with VichUploaderBundle.

Likewise, we will implement our own database populator / fixtures by way of a Symfony Console Command. The reasoning here is not to say that a console command is better than using a dedicated fixtures library - far from it - it is intended to help you understand how to do this yourself, so you understand what tools that automate these processes are doing for you.

Code For This Course

Get the code for this course.


# Title Duration
1 Introduction and Site Demo 02:14
2 Setup and a Basic Wallpaper Gallery 08:43
3 Pagination 08:24
4 Adding a Detail View 04:47
5 Creating a Home Page 11:14
6 Creating our Wallpaper Entity 07:50
7 Wallpaper Setup Command - Part 1 - Symfony Commands As a Service 05:57
8 Wallpaper Setup Command - Part 2 - Injection Is Easy 08:53
9 Wallpaper Setup Command - Part 3 - Doing It With Style 05:37
10 Doctrine Fixtures - Part 1 - Setup and Category Entity Creation 08:52
11 Doctrine Fixtures - Part 2 - Relating Wallpapers with Categories 05:56
12 EasyAdminBundle - Setup and Category Configuration 06:02
13 EasyAdminBundle - Wallpaper Setup and List View 07:46
14 EasyAdminBundle - Starting with Wallpaper Uploads 05:57
15 Testing with PhpSpec to Guide Our Implementation 03:39
16 Using PhpSpec to Test our FileMover 05:34
17 Symfony Dependency Testing with PhpSpec 08:47
18 Defensive Counter Measures 06:33
19 No Tests - Part 1 - Uploading Files in EasyAdminBundle 11:01
20 No Tests - Part 2 - Uploading Files in EasyAdminBundle 07:05
21 Don't Mock What You Don't Own 09:36
22 You've Got To Take The Power Back 07:36
23 Making Symfony Work For Us 08:56
24 Testing The Wallpaper File Path Helper 15:11
25 Finally, It Works! 14:56
26 Why I Prefer Not To Use Twig 16:51
27 Fixing The Fixtures 11:20
28 Untested Updates 14:30
29 Untested Updates Part Two - Now We Can Actually Update 06:33
30 Adding an Image Preview On Edit 12:31
31 Delete Should Remove The Wallpaper Image File 11:02
32 Getting Started Testing Wallpaper Updates 10:02
33 Doing The Little Before The Big 08:13
34 Tested Image Preview... Sort Of :) 07:36
35 Finishing Up With a Tested Wallpaper Update 10:41
36 Test Driven Wallpaper Delete - Part 1 11:06
37 Test Driven Wallpaper Delete - Part 2 11:57
38 EasyAdminBundle Login Form Tutorial 08:01