
Perform a version check to confirm your Symfony 6 setup is ready for hands-on development in the getting started course.
Explore how to set up Symfony, build a basic blog, and master routing, controllers, Twig templating, Doctrine ORM, forms, and testing across web and CLI workflows.
Build a weather forecast system with a static page and a zoomable leaflet map. Manage locations and forecasts via an admin panel and expose data through a Json api.
Confirm your PHP syntax basics. Discover that no Symfony or any other framework experience is required, with guidance to start from the beginning or jump to the Symfony part.
Identify the target audience for Symfony 6 and follow a roadmap, guiding beginners to prerequisites, intermediate developers to why a framework, and experienced users to the Symfony installation.
Explore client-server architecture and the fundamentals of web applications, starting with plain PHP request and response, advancing to HttpFoundation components, a front controller, and Symfony application flow.
Explore client-server architecture, showing how requests travel from browser to server, are processed, and render as web pages using get, post, and curl with httpbin examples.
Learn to read the request URI and query parameter foo in PHP and return a response using $_SERVER, $_GET, and a built-in PHP 8.2 server.
Install and autoload the HttpFoundation package using composer, then create a Request from globals. Read the path info and query parameter 'foo' with get() to see the uri and value.
Learn to build and send an HttpFoundation response by preparing content with setContent, setting status with setStatusCode (HTTP_OK), configuring the Content-Type header, and sending the response.
The front controller centralizes request handling in index.php, routing URIs to home, contact, and blog, while using request and response objects to manage parameters, content, and HTTP statuses.
Explore how the Symfony application flow uses a front controller, the kernel, and routing to map URIs to controllers. Each controller returns an HttpFoundation Response that the front controller sends.
Explore the code of the simplest possible PHP block, identify and fix issues, and build toward a reusable custom PHP framework while understanding why frameworks matter.
Trace evolution from flat php to a simple framework, using a two-file sqlite blog to list posts and illustrate separating controller and template while noting missing error handling.
extract view demonstrates moving html to templates and letting the controller fetch posts, iterate results, and render html or json, illustrating separation of data logic from templating.
Extracts database logic into an isolated model with model.php using pdo to provide a get_all_posts function for reusable post data under the mvc pattern.
Show how to separate a common layout from page-specific content using a reusable layout.html.php, with output buffering to inject title and content blocks for list pages.
Create a show page by duplicating index.php, implement get_post_by_id with prepared statements to fetch a single post by id, and render it with the show template.
Consolidate controllers into a front controller by creating controllers.php with list_action and show_action; route via URI parsing, load the model, and return 404 for unknown routes.
Learn to enhance a blog using composer and the HttpFoundation Request and Response components, set up autoloading, create a front controller, and render templates with a routing and templating system.
Discover the technical requirements of Symfony, explore the Symfony cli, review versions and evolutions, compare skeleton flavors, and see a hands-on blog example to unlock Symfony's potential.
Meet the Symfony 6 setup by ensuring PHP 8.1 or higher, required extensions: Ctype, iconv, JSON, PCRE, Session, SimpleXML, and Tokenizer; install Composer (composer.phar or global) and optionally Symfony CLI.
Explore the Symfony CLI, a command line tool that checks requirements, creates projects, boots a TLS local server, and checks security vulnerabilities with Platform.sh integration.
Navigate Symfony versions and revolutions, comparing long-term support and stable releases, from 1.x to 3.x, and the shift toward monolithic and lightweight rest api architectures in 6.x.
Explore two Symfony flavors: skeleton for microservices and website skeleton for monolithic apps with database, templating, and validations. Learn project setup with Symfony binary or composer, create-project, and env configuration.
Install Symfony skeleton and website skeleton versions, create a simple blog with a Post entity, and generate full CRUD in under ten minutes using the console.
Explore building a weather forecast system with Symfony fundamentals, including a Leaflet map, frontend and backend admin panel, API endpoint, and PHPUnit tests.
Install Symfony for the weather forecast project by downloading the composer binary, scaffolding a monolithic skeleton or webapp skeleton, and running a local server while configuring php.ini and accelerators.
Upload your Symfony project to a GitHub repository by creating the repo, initializing git, adding a remote origin, committing changes, and pushing to main.
Explore the Symfony 6 directory structure, learn where to store data, create a controller with routing for your first page, and build templates with Twig while using the debug toolbar.
Install a fresh Symfony skeleton with composer, explore the project's directory structure—bin, console, config, public, src, var, vendor—and learn how .env and .env.local control prod and dev environments.
In this video we will create our first WeatherController and its first action - randomWeather().
We will create route for the randomWeather() action. First using attributes, which is the recommended way. Then we will check out the option of external Yaml file.
Learn to list and inspect routes in Symfony 6 using debug:router and bin/console, and see how route names reflect controller actions while code changes affect links.
Learn to render Twig templates in Symfony by installing the Twig bundle, creating the templates directory and a weather/highlander says.html.twig template, extending AbstractController, and rendering with a forecast variable.
Explore the debug toolbar and profiler in Symfony by installing the profiler-pack, launching the dev server, and inspecting performance metrics, routes, requests, and Twig templates.
Explore the three Twig constructs: say, do, and comment, and learn how to use blocks and default values, apply filters like upper, lower, and raw, and understand Twig's escaping behavior.
Create a static info page using Twig to render a home route in Symfony 6, building a StaticController with a home action that renders home.html.twig for the weather forecast system.
Configure routes in Symfony 6 by setting http methods, restricting by host, and configuring parameters and requirements; group and prefix routes, then generate urls in controllers, templates, and javascript.
Explore route configuration in Symfony six by comparing attributes and config files (YAML, XML, PHP), learn naming routes, debug routing, and mixing approaches across modules for scalable navigation.
Learn to limit accepted http methods for routes by configuring methods arrays in controllers and routes.yaml, using get and post, and handling 405 method not allowed in Symfony 6.
Learn how to pass a threshold parameter via routes and YAML in Symfony 6, enabling control over rainy versus sunny forecasts by binding a threshold placeholder.
Learn how to set parameter default values in Symfony 6 routes using attributes or YAML, making parameters optional and ensuring consistent results when refreshing the browser.
Configure route parameters with validation using digits for threshold and a regex, and manage duplicate routes by unique or automatic names. Use priority to ensure the correct handler is invoked.
Inline route parameter rules by placing conditions in angle brackets, remove requirements, and set a default value for optional parameters such as threshold; verify with the profiler and YAML routing.
Group and prefix routes in Symfony 6 by moving routes from routes.yaml to weather.yaml, applying a weather prefix, and using class attributes to configure grouped routes.
Learn to use Symfony's RedirectController to redirect the home page to a route or absolute URL with optional parameters and a permanent option, using routes.yaml or attributes.
Limit Symfony routes to specific hosts by creating an API-only endpoint guarded by host api.localhost, returning JSON via JsonResponse built from a forecast string.
Generate and use URLs across controllers, templates, and JavaScript by leveraging Symfony's routing subsystem, using generateUrl, path, and url with parameters like threshold to create absolute or relative links.
Create a WeatherController with a forecast action that accepts country code and city name, outputs a simple HTML response, and exposes a route like /weather/{countryCode}/{cityName} to verify it works.
Create a simple controller manually, then use the maker bundle, learn proper error handling with 404 and 500 codes, manage user data and PHP sessions, and explore response options.
Explore how a Symfony controller can be a PHP callable and an invokable HelloController demonstrates routing. Extend AbstractController to access helper methods for url generation, redirects, and template rendering.
Learn to scaffold Symfony controllers with MakerBundle using the make:controller command, install it via composer for dev, and generate both a template-based AutoController and a JsonController with JsonResponse.
Learn to handle errors in Symfony by validating guesses and returning 404 with NotFoundException, 400 with BadRequestHttpException, or 500 for generic exceptions, and view how prod hides stack traces.
Use the HttpFoundation request object to access query parameters via $request, and leverage getContent and toArray for payloads; build forecasts from trials (defaulting to one) for rendering in templates.
Explore how the MapQueryParameter attribute replaces a separate API host and retrieves a threshold via query string, defaulting to 50 for dynamic API calls.
Explore how the #[MapQueryString] attribute maps query parameters to a dto in Symfony, using trials and threshold to build forecasts. Handle defaults and nullable input for flexible ingestion.
Demonstrates accepting a post json payload in a Symfony 6 API by using the MapRequestPayload attribute, updating the WeatherController to read the body instead of the query string.
Access and manage sessions in Symfony using the RequestStack to read and persist a threshold value, then display it in the forecast view.
Learn how to add and display flash messages in Symfony 6 using the addFlash() helper, store them in session, and render them in Twig with app.flashes.
Explore alternative response objects in Symfony using json() or JsonResponse, and see how the serializer component shapes JSON output, plus how mime types and ResponseHeaderBag govern file responses.
Would you like to be able to create a basic blog in under 10 minutes? If so, then this course is for you!
This course has been recorded on version 6.3. We went through all the videos and where needed - updated them. The course is now fully compatible with Symfony Framework 6.4 (LTS). We checked the course against Symfony 7.0 and 7.1 and it works! Shortly we'll add 7.0 and 7.1 source codes to our GitHub repo.
Symfony is an amazing modern PHP framework. Modern, but not new. It has been there since 2005, so majority of its childhood problems have been solved long ago. During my career I’ve worked on projects build in Laravel, Cake, CodeIgniter, Next.js, Spring and many more frameworks in various languages. But Symfony is the framework of my choice.
In this beginners / intermediate course, I am going to show you how to get started with Symfony Framework. I assume you have no prior experience with Symfony, but some knowledge of PHP is required. This course is also kept updated to the most cutting-edge Symfony versions, so even if you are an advanced developer - I believe you will find something for you here too!
This is a hands-on course, so not only will I show you the most fundamental concepts of Symfony, but also we will work on a real-world app. We will build a weather forecast system. First as a monolithic website, and then as a backend API, which can be consumed by React, Vue or Vanilla JS apps.
Why to purchase this course? While the documentation on Symfony website will show you all possibilities that the framework offers, in this course I am going to point you to the ways which actually work best. However, I would also like you to get your own opinion on this and other frameworks, so close to the end of the course, I’m going to show you how to achieve similar effects using Laravel and Next.js.
Symfony keeps evolving, and so does this course. When something changes in Symfony, I’m going to create new videos and replace relevant parts of the course. So enroll once and learn continuously.