Kevin Bond
@zenstruck
Open Source, #PHP, #Symfony Developer. Writer @SymfonyCasts, @Symfony Core Member. Author of https://github.com/zenstruck packages.
Thanks for having me! Here are the slides: speakerdeck.com/kbond/rethinki… We'll get back to you about the shirts! 😀
🔴 #SymfonyOnline June 2025 Wrapping up the day with @zenstruck and his talk: "Rethinking File Handling in Symfony" 🗂️ @SymfonyCast That iconic t-shirt is still in demand — attendees are asking where to get it! 👕
Let's look at a more complex translation, one with dynamic values and pluralization, because "1 dinosaurs" doesn't sound quite right 🦖 symfonycasts.com/screencast/tra…
One last thing before we finally translate the site: translation "keys". Let's look at why we use these, how to use them, and how YAML helps! symfonycasts.com/screencast/tra…
Let's do the real work of translating! See where and how you translate text, the "anatomy" of a translation, creating, and loading them. symfonycasts.com/screencast/tra…
Let's create a nifty language switcher widget since having users manually manipulate the URL in their address bar is a huge bummer. symfonycasts.com/screencast/tra…
With the Translation component installed and configured, our next step is to figure out what language a user wants. There are a couple ways to do this, but let's look at the most robust one: Localized, or Translated routing. symfonycasts.com/screencast/tra…
🇬🇧 🔄 🇪🇸 🔄 🇫🇷 New course all about the Symfony Translation component! We'll take an English-only site, translate it into multiple languages, add a language switcher and let it loose on the world... First let's install the component. symfonycasts.com/screencast/tra…
How do we join across a ManyToMany relation with that nasty join table in the center? By ignoring it! It’s all properties & objects symfonycasts.com/screencast/doc…
🚀 Kicking off the Symfony AI Initiative ➡️ symfony.com/blog/kicking-o…
The recordings from @jetbrains #PHPverse 2025 are now available to watch! You can catch up on any sessions you might have missed🎞️ 👉youtube.com/playlist?list=…
If you already love Foundry (I do!), wait until you see how simple it is to create a *fleet* of ships and their parts symfonycasts.com/screencast/sym…
How do we relate a part to its ship? Throw away all that noise about ids & foreign keys: In Doctrine, we relate *objects* and it handles all the boring stuff. That’s pretty 💣 symfonycasts.com/screencast/sym…
ManyToOne: the king of all relations. The way this looks in PHP & the database is nerd wonderful! symfonycasts.com/screencast/sym…
Up next: a deep dive into education 🧑🎓 Led by some of the most respected voices in the field – @jeffrey_way, @zenstruck, and @PovilasKorop – live on the @JetBrains YouTube channel 👉 youtube.com/live/3b0ty1iZ8…
To track our starship parts let’s create a StarshipPart entity & load the database via Foundry. Don’t forget the “part” called toilet paper! symfonycasts.com/screencast/sym…
Our Javascript event listener to sync LemonSqueezy customers with our app users has a little security issue. We could disable the listener in production and just rely on webhooks but that's lame! Let's fix the problem! symfonycasts.com/screencast/lem…
Kevin Bond @zenstruck shows us how to make @symfony file handling easier and more maintainable in his recent @symfonycon Online 2025 session speakerdeck.com/kbond/rethinki… #symfony #symfonyonline #foss #opensource
New tutorial time! We’re catching up & finishing up (I know, way overdue 🧠 ) our Symfony 7 track with Symfony 7 Doctrine Relations! We’re kicking off with alien animations AND audio from me, @weaverryan! 🌟 symfonycasts.com/screencast/sym…
Working with webhooks locally can be a bit of a pain, even with Ngrok. Let's look at an alternative way to sync our app users with LemonSqueezy customers: Javascript events! symfonycasts.com/screencast/lem…
The LemonSqueezy checkout now happens in our app, booya! But, it's pretty subtle. Let's embed it in a modal and fine-tune the "open checkout" button 💅 symfonycasts.com/screencast/lem…