Blog
Subscribe via RSS or hear about updates first with our newsletter.
-
Creating a Symfony Reproducer
Oh snap! You've discovered what you suspect is a bug in Symfony. Don't despair, Symfony is open source so there are many ways you can help get it resolved. Let's look at how to create a reproducer to help other contributors understand the issue and find a solution.
-
Kevin Bond (aka Zenstruck) joins SymfonyCasts
Kevin Bond (aka Zenstruck) is joining forces with us as a head tutorial writer. This means tutorials created by Kevin in the SymfonyCasts style you know and love. It also means the ability for us to make more content about more libraries and solutions around the Symfony ecosystem.
-
Ryan has Incurable Brain Cancer - but SymfonyCasts is Strong
Bad News: Ryan has incurable brain cancer. Good News: SymfonyCasts is still going strong. Best news: we're fighting it with everything we've got & have amazing support from the community.
-
Live Stream #11: Turbo Morph Updates & Autocomplete morphing work
Live stream from Feb 28th where we get some updates on the "active value" change in Turbo 8 morphing. Then we dive into work on a PR for the autocomplete component: making it morph-ready... which is tricky!
-
Live Components + Turbo Streams: Navigating a Turbo Frame
When you redirect from a
LiveAction
, LiveComponents, naturally, will perform a full page redirect (or redirect viaTurbo
if it's available. But what if you want to navigate a Turbo frame? The answer lies in some clever use of Turbo Streams. -
Live Stream #10: Finishing the LiveComponents data-live-action-args Syntax Change
Live stream from Feb 20th where we do some open source maintenance on Symfony UX, merge some PR's then finish the
data-live-action-args
pull request that we first discussed several weeks ago. Good work towards LiveComponents stable! -
Live Stream #9: Turbo 8, Live Components & Challenges in Morphing
Live stream from Feb 14th where we dive Turbo 8, view transitions, and "morphing": the key tech behind LiveComponents & a new feature in Turbo 8. We work on how to make our Stimulus controllers morph-ready.
-
Live Stream #8: Live Component JavaScript Internals
Live stream from Feb 7th where we dive into the JavaScript behind the Live Components package: the Stimulus controller, Component objects, how re-rendering happens & the internal plugins system. Yes, this one gets TECHY.
-
Live Stream #7: Let's build some Twig UI Components
Live stream from Jan 31st where we talk about Twig attribute syntax proposal, the new "URL" binding feature in LiveComponents and then dive into building a "Tooltip" Twig component / recipe for a proposed new section of the UX site.
-
Live Stream #6: Building v2 of our TutsHero Tutorial-building Tool
Live stream from Jan 24th where we talk about HTTP caching, brainstorming the "attributes" variable for Twig Component & some hacking on our internal tutorial-building tool: TutsHero.
-
Doctrine's HIDDEN gem
Using Doctrine's HIDDEN doesn't come up often but it is a great tool to have when you need it!
-
Live Stream #5: A Day in the Life of Getting Live Components to stable
Live stream from Jan 17th where we talk about the steps to getting live components to a stable release and triage a few technical issues.
-
2023: A Year in Tutorials & Open Source
Let's peek back at 2023: the tutorials we created & the open source initiatives that you helped us push forward.
-
Preloading Assets for Fun & Performance
Want your site to fly? Preload your assets! This happens automatically in AssetMapper, but let's learn how it works anyway!
-
30 Days of LAST Stack Tutorial Free until Jan 15th
To celebrate the release of Symfony 7 & a stable AssetMapper, we're releasing a 30 day LAST stack tutorial starting December 1st. And, it's free until Jan 15th! Share the love.
-
Stop Combining CSS & JS! + Performance Revisited
Combining files to minimize requests is a relic to of the past. It's time to stop.
-
Myth: JS imports need a Build System
One of the biggest reasons to use a bundler is
import
andexport
. But guess what? These work in your browser just fine.` -
Your LAST Stack
Introducing LAST Stack: A simple, no-build, high-performance, stack made up of Live Components, AssetMapper, Stimulus & Turbo.
-
Introducing Cat GPT
Tap into the most powerful source of knowledge in the world: your cat!
-
Automated Spanish Translations
We're happy to announce that from now on we'll deliver Spanish translations to our new tutorials (scripts and subtitles)... pretty much instantly!
-
Traducciones Automáticas al Español
Nos complace anunciar que a partir de ahora entregaremos traducciones al español de nuestros nuevos tutoriales (guiones y subtítulos)... prácticamente al instante!
-
Clean up your migrations!
Does your giant migrations/ folder bother you? Let's do some spring cleaning! A tip about how to get rid of a huge set of old migration files in your project, without blowing up your database.
-
SymfonyCasts en Español
En SymfonyCasts nos arremangamos y traducimos nuestro popular curso de Symfony 5 para que puedas disfrutarlo gratuitamente sin tener que activar el traductor universal!
-
Wanna see some Panther
You don't have to go to the Zoo to see the Panther in action. All you need is Composer and some time to configure things properly!
-
Setting up Behat on Symfony 5 or higher
Got issues with Behat running on Symfony 5 or higher? Want to know more about its configuration and possibilities? You are in the right spot!
-
Symfony World Videos are Available (but not here)
The Symfony World videos are available with high-quality captions, but not in SymfonyCasts this year!
-
Now Exposed: composer.json & package.json for every Tutorial
Curious what versions of a library a tutorial is using? Every tutorial now exposes the full composer.json and package.json info!
-
SymfonyCasts is here to listen
We are motivated by the message and momentum of the Black Lives Matter movement that is happening worldwide and in the US.
-
SymfonyCasts Rebrands as SymfonyCATS
After mis-typing SymfonyCasts as SymfonyCATS... about a million times, we decided it was easier just to go with it.
-
SymfonyCon 2018 Lisbon Videos are Here
Did you attend SymfonyCon and want to re-watch stuff? Or maybe you missed it and need to catch up? Either way, SymfonyCon 2018 videos are here!
-
KnpUniversity is now SymfonyCasts!
We've got some big news! KnpUniversity is now SymfonyCasts! Find out what this means, and why we're excited!
-
Bookmark your favorite courses and videos
We've been getting many requests lately from our users about a bookmarking feature, and now it's ready!
-
Adding English Subtitles & Course Thumbnails
Making our content friendly & accessible is super important. That's why we've just added English subtitles & course thumbnails!
-
New for January 2018
2018 = Symfony 4 Development
-
2017 Year in Review
2017 was the biggest year yet for KnpUniversity!
-
New for November 2017
New Release: PHPUnit with a Bite & we hope to see you in Cluj!
-
New for October 2017
New releases, upcoming tutorials, and upcoming Symfony events we want you to know about in October!
-
Changes to Symfony Tutorials for Symfony 3.3
Symfony 3.3 comes with some great new config in services.yml. But, if you're coding along with our tutorials, this code may cause some issues! Find out how to keep coding along happily.
-
Introducing KnpUOAuth2ClientBundle: Making Social Easy
Say hello to KnpUOAuth2ClientBundle: Social connect, social authentication, social registration - do it all, easily and without frustration.
-
Why I Love Drupal People
Yea yea yea, Drupal 8 is out. But more than that, Drupal people are awesome. So let me tell you about how I met them...
-
7 Free Screencasts for the Drupal 8 Party
Drupal 8 is here! Now get to work with video tutorials and coding challenges for Drupal, OO coding and more. All free until Dec 25th.
-
Behat on CircleCI with Failure Screenshots
Not only is running Behat on CircleCI easy, with just a few lines of code, you can get screenshots when a test fails.
-
Fun with Symfony's Console Component
Symfony's Console component can be used in a single, standalone file to add colors, build a table or add a progress bar with a beer icon.
-
Symfony's Under-Used property_path option
The Symfony Form property_path option is one of the most under-appreciated, and powerful parts of the form component.
-
Our favorite PhpStorm Live Templates + Share yours
PhpStorm Live Templates: where you type a word, hit tab, and it expands into a full code-block, saving you time on all the code you write over and over again. We've published a few of our favorites, and are hoping you'll share yours.
-
Introducing Guard: Symfony Security with a Smile
Introducing Guard: Authentication any way you want, customize the heck out of every part, and come out smiling. It's Symfony's security system unleashed!
-
How we Upgraded to Symfony 2.7 (+ deprecation notices)
Symfony 2.7 has landed! Learn how we upgraded to the latest LTS and what hiccups we hit along the way.
-
Symfony Service Expressions: Do things you thought Impossible
Did you know you can inject a Doctrine repository into a service without registering it as a service? How about injecting scalar values are arguments that live in the database? If not, you may have missed Symfony's Expression Language.
-
Why I Switched from Assetic to Gulp
I switched from Assetic to Gulp to get more features and better support. In this post, I'll' tell you why there's a good chance that switching to Gulp is a good decision for you too. And, I'll give you a quick, 3-step intro to Gulp itself.
-
Expanding Code Blocks
We're giving our code-blocks a face-lift to show the filename and folded lines you can expand to see the entire file.
-
Bundles, No Bundles and AppBundle in 10 Steps
The new AppBundle in Symfony is controversial, but I'm not sure it should be. In this post, I'll show you why it exists, why bundles are just directories, and how close we are to having no bundles at all. Sound crazy? It might just change the way you think about your app.
-
All About the All Access Subscription Pass
The KnpU All Access Pass ... ooohhh ahhhh. Introducing binge-watching and more frequent content. Build something amazing!
-
Update your Docs for "composer require", then Celebrate with a Sandwich
Composer's require command just learned how to guess the best version for you. So update your library docs to have a one-line installation! And then have a sandwich.
-
Want to be a Drupal 8 Expert? Start with Symfony
Drupal 8 changes a lot under the hood and those will make you a happier and more productive developer. But don't wait for its release to kick butt in the new world. That's right, just learn Symfony.
-
The Collaboration Machine of the Docs World
Collaboration on software is huge, and we all enjoy the benefits. So why don't we see more with documentation? I'll tell you where I think tutorials & collaboration are going and what prevents us from getting there. But I also want to know what keeps you from writing tutorials and collaborating.
-
Accessing and Debugging Symfony Form Errors
Inspired by an old StackOverflow post, we'll investigate why it's so hard to get all of the errors of a form and unlock some new tricks by understanding the form hierarchy.
-
Evolving RequireJS, Bower and Grunt
At SymfonyCon Warsaw, I talked about RequireJS, Bower and Grunt in your PHP project. In this post, we'll go a bit further and check out a way to organize things that may be even better!
-
We can has RSS?
We have an RSS feed! Ok, that's not earth-shattering, but we will be sharing tech experiences, updates, and other tech topics and we don't want you to miss out. We also talk about the code behind the RSS.
-
REST Revisited
After our recent "What the REST" post, a lot of people came out to help answer the most difficult questions around creating a RESTful API. In this post, I outline what we learned and what questions remain before we release our REST tutorial.
-
Finding our OS Content License
We're releasing the content of our screencasts and we want to get the license right. In this post, we give a little background and ask for your thoughts.
-
What the Rest?
REST is as deep as the rabbit hole, with varied approaches and undefined best-practices. Should I use custom hypermedia types or something like HAL or JSON-LD? Should I implement OPTIONS? What role should the API documentation play and what information should be described inside the API itself? In this post, I'm asking for help.
-
KnpYou!
Sometimes, learning something technical is just plain hard. Information is scattered, opinions vary, and best-practices are buried. Nothing tells the whole, realistic story in a real world application. We work together on open source libraries, but not on tutorials. So now, we're excited to enter our next phase, where it's all about collaboration and working together!