Web Development · WDC-01-33

Web Development with Symfony

Web Development with Symfony is a course in building a blog from scratch with Symfony 8, covering Twig pages, Doctrine ORM, forms, login and an EasyAdmin back office. It suits developers who already write PHP and students working on PHP and MySQL projects, and you leave with a working blog that manages posts and authors.

Updated
From 5,310 THB / person 5,900 −10% excl. VAT 7% · group rates available
PDFDownload the course outline
  • Duration18 hours · 3 days
  • FormatOnsite / live online
  • Next roundOn request
  • CertificateIncluded

Course overview

Symfony is a well-structured PHP framework that underpins a large number of PHP projects. The current version is Symfony 8, which requires PHP 8.4 or later, and Symfony 7.4 is the LTS release for systems that need a long support period. Compared with Symfony 2, the approach has changed a great deal: configuration with PHP attributes, autowiring, Symfony Flex and code generators such as MakerBundle make projects quicker to start and easier to maintain.

This course builds a blog with an admin area from scratch with Symfony 8. It starts with project setup, routing, controllers and Twig, works with the database through Doctrine ORM and migrations, adds forms and comments, uses the service container, protects the admin area with Security, builds the back office with EasyAdmin, supports several languages through the URL and adds tests, then closes with a workshop and deployment. (3 days, 6 hours per day, 18 hours in total, Intermediate level.)

What you’ll gain

  • Understand the structure and ideas of Symfony 8, including how it differs from Symfony 2
  • Create a project with the Symfony CLI and use routing, controllers and Twig
  • Work with the database through Doctrine ORM entities, repositories and migrations
  • Build forms with validation and move logic into services
  • Protect the admin area with Symfony Security login and permissions
  • Build a back office for posts and authors, and a multilingual site
  • Write tests and deploy a Symfony application to production

Who this course is for

  • Developers who already write PHP and want a framework with a clear structure
  • Students working on PHP and MySQL projects
  • Teams maintaining older Symfony systems who want to understand current practice
  • Anyone interested in web development with a background in HTML, CSS and PHP

Prerequisites

  • Able to write PHP, with a basic understanding of classes and objects
  • Able to build web pages with HTML and CSS
  • Able to write basic SQL, with some experience of MySQL or MariaDB
  • A laptop that can run PHP 8.4 or later, Composer, the Symfony CLI and VS Code, with permission to install software

Curriculum

Course Details

This course is the 2026 edition of Web development with Symfony 2 framework. It runs for 3 days, 6 hours per day (18 hours in total, 09:00-16:00), as lectures with labs and a workshop. Intermediate level. This edition moves from Symfony 2 to Symfony 8. It keeps the original project, a blog with post and author management built from scratch, but no longer splits application code into several

bundles and drops AppKernel, annotations and generate:bundle in favour of PHP attributes, autowiring, Symfony Flex and MakerBundle. The admin area is built with make:crud and EasyAdmin, and AssetMapper, Symfony UX, Mailer, tests and deployment are new. Learners who need a long support period can use Symfony 7.4 LTS, as most of the content is the same. Learners take home a lab guide, source code for every lab and their blog project.

Day 1 Symfony 8 Basics and the Database

Section 1: Getting to Know Symfony 8

  • The Symfony framework and the Symfony components
  • Current and LTS releases, and the release cycle
  • From Symfony 2 to Symfony 8: what was dropped and what replaced it
  • Requests, responses and controllers

Section 2: Lab: Setting Up and Creating a Project

  • Install PHP 8.4 or later, Composer, the Symfony CLI and VS Code
  • Create a project with symfony new --webapp
  • Run the local web server with symfony server:start
  • The config, src, templates and public folders, and Symfony Flex

Section 3: Routing, Controllers and Twig

  • Define routes with the #[Route] attribute and parameters
  • AbstractController, responses and redirects
  • Twig templates, layout inheritance and include
  • Lab: the home page and an about page for the blog

Section 4: Lab: Doctrine ORM and Entities

  • Configure the database in the .env file and create it
  • Create post, author and category entities with make:entity
  • Mapping with PHP attributes and ManyToOne relations
  • Create tables with migrations and sample data with fixtures

Section 5: Repositories and Post Pages

  • Query data with repositories and the query builder
  • Load entities from the URL automatically with #[MapEntity]
  • Pagination and slug URLs
  • Lab: the post list, post page and author page
Day 2 Forms, Services, Security and the Back Office

Section 6: Lab: Forms and Validation

  • Create form types with make:form
  • Validate data with constraints as attributes
  • Render forms in Twig and protect them against CSRF
  • Lab: a comment system under each post

Section 7: The Service Container and Dependency Injection

  • Services, autowiring and autoconfiguration
  • Move logic out of controllers into services
  • Configuration with parameters and environment variables
  • Lab: a service that creates slugs and estimates reading time

Section 8: Security: Users and Login

  • Create a User entity and a password hasher
  • A login page with make:security:form-login, and logout
  • access_control and #[IsGranted] for the admin area
  • Limit password guessing with login throttling

Section 9: Lab: An Admin Area with make:crud

  • Generate post and author management pages with make:crud
  • Place these pages under the /admin area
  • Flash messages and redirects after saving
  • Writing it yourself compared with using EasyAdmin

Section 10: Lab: A Back Office with EasyAdmin

  • Install EasyAdmin and create a dashboard with make:admin:dashboard
  • CRUD controllers with make:admin:crud
  • Customise fields, filters and menus
  • Lab: a back office for posts, authors and comments
Day 3 Frontend, Languages, Tests and Workshop

Section 11: Frontend with AssetMapper and Symfony UX

  • Manage CSS and JavaScript with AssetMapper, without a build tool
  • Install Bootstrap with importmap:require
  • Stimulus and Turbo for responsive pages
  • Lab: give the blog a responsive design

Section 12: Lab: A Multilingual Site

  • Pick the language from the URL with the {_locale} parameter
  • Translate messages in Twig with trans
  • Extract messages to translate with translation:extract
  • Lab: a blog in Thai and English

Section 13: Email, Events and Background Work

  • Send email with Mailer and test it with Mailpit
  • Event listeners and event subscribers
  • Messenger for work that does not need to wait
  • Lab: notify authors when a new comment arrives

Section 14: Lab: Testing and Debugging

  • The Symfony Profiler and the web debug toolbar
  • Unit and functional tests with PHPUnit and WebTestCase
  • Test forms and pages that need a login
  • Check routes and services with debug:router and debug:container

Section 15: Workshop: A Blog with a Back Office, Deployed

  • Combine every part into a blog with post and author management
  • Configure APP_ENV=prod, caching and secrets
  • Deploy with public as the document root
  • Use an AI assistant to review code with care, and next steps

Schedule & training options

For individuals — public rounds

No public rounds are open right now. Join the waiting list and we will contact you first when the next round opens, or ask us on LINE. Or call 02-570-8449 or 088-807-9770

For organisations — in-house / private

  • Tailor the content to your team’s tools and projects
  • Your dates, at your office or live online
  • Quotation with tax ID for procurement
Corporate training quote

Instructors

Frequently asked questions

Does Symfony 8 still use bundles the way Symfony 2 did?

Symfony itself and add-on libraries are still distributed as bundles, such as Doctrine, Twig or EasyAdmin, but your own application code no longer needs to be split into several bundles. It lives in the src folder under the App namespace, for example in Controller, Entity and Repository. Installed bundles are registered automatically by Symfony Flex in config/bundles.php, so there is no need for generate:bundle or the old AppKernel file.

What is Doctrine ORM used for in Symfony?

Doctrine ORM is the layer between your code and the database. You write entity classes and map them to tables with PHP attributes, which make:entity generates quickly. Migrations then create or change tables to match the entities, the entity manager saves data with persist and flush, and repositories or the query builder load data in terms of objects instead of hand-written SQL every time.

What is the service container in Symfony, and how does it help?

The service container creates and supplies the application's service objects, such as the mailer, the database layer or classes you write yourself. Current Symfony enables autowiring by default: you type-hint a dependency in a constructor and the container passes in the right object. This keeps logic out of controllers, makes code modular and easy to test, and needs very little extra configuration.

Who is the Web Development with Symfony course for, and what should I know beforehand?

It suits developers who already write PHP and want a framework with a clear structure, students working on PHP and MySQL projects, and teams maintaining older Symfony systems. You should be able to write PHP with a basic understanding of classes and objects, build pages with HTML and CSS, write basic SQL and bring a laptop that can run PHP 8.4 or later.

What will I be able to do after the Web Development with Symfony course?

You will be able to create a Symfony 8 project with the Symfony CLI, use routing, controllers and Twig, work with the database through Doctrine ORM and migrations, build forms and comments, move logic into services, protect the admin area with Security, build a back office with EasyAdmin, make the site multilingual, write tests and deploy, ending with a blog that manages posts and authors. Participants receive a Certificate of Completion with its own number that can be verified online.

Can the Web Development with Symfony course be run in-house for our team?

Yes. It can be run in-house for your team, with examples adapted to your work, such as building a content or data management system close to your real tasks, or using Symfony 7.4 LTS to match your existing systems. You can request a quotation from this page, or contact us on LINE @itgenius or by phone on 02-570-8449.