CINXE.COM
Search Results for: API Platform | SymfonyCasts
<!DOCTYPE html> <html lang="en" class="scroll-smooth"> <head prefix="og: http://ogp.me/ns#"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="PHP and Symfony Tutorial Screencasts - with free videos, scripts, and code downloads!"> <meta property="og:image" content="https://symfonycasts.com/build/images/og-sfcasts.89bb7107.png"> <title>Search Results for: API Platform | SymfonyCasts</title> <link rel="stylesheet" href="https://symfonycasts.com/build/150.899c05e4.css" data-turbo-track="reload"><link rel="stylesheet" href="https://symfonycasts.com/build/tailwind.945ec199.css" data-turbo-track="reload"> <link rel="preconnect" href="https://kit.fontawesome.com"> <link rel="preconnect" href="https://api.fontshare.com"> <link rel="stylesheet" href="https://kit.fontawesome.com/f44096511e.css" crossorigin="anonymous"> <script async defer src="https://sa.symfonycasts.com/latest.js"></script> <script src="https://symfonycasts.com/build/runtime.a477f750.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/8764.79cb6dbe.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/7658.310a38b9.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/4987.fd46174f.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/4184.4446a197.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/2624.eedc0a93.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/969.cbfbbb6b.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/4430.b8f58b3a.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/4079.812ac5c4.js" defer data-turbo-track="reload"></script><script src="https://symfonycasts.com/build/tailwind.455d4657.js" defer data-turbo-track="reload"></script> </head> <body class="min-h-screen bg-white text-black-8 dark:text-white dark:bg-black-9" data-user-id="" > <header data-controller="mobile-menu" class="border-b border-black-2 dark:border-black-8 dark:bg-black-9"> <section class="max-w-screen-2xl mx-auto py-3 px-5 flex justify-between items-center"> <div class="flex grow"> <button data-action="mobile-menu#toggle:prevent" class="md:hidden cursor-pointer relative w-4 h-6 mt-2.5 mr-3"> <div class="bg-black-9 dark:bg-white w-4 h-0.5 rounded absolute top-4 -mt-0.5 transition-all duration-500 before:content-[''] before:bg-black-9 before:dark:bg-white before:w-4 before:h-0.5 before:rounded before:absolute before:transition-all before:duration-500 before:-translate-x-2 before:translate-y-2 after:content-[''] after:bg-black-9 after:dark:bg-white after:w-4 after:h-0.5 after:rounded after:absolute after:transition-all after:duration-500 after:-translate-x-2 after:-translate-y-2"></div> </button> <a href="/" class="text-3xl font-medium"> <div class="bg-[url('../images/symfonycasts-logo-dm.svg')] w-[52px] h-[45px] bg-cover bg-no-repeat min-[1099px]:bg-[url('../images/symfonycasts-logo.svg')] min-[1099px]:dark:bg-[url('../images/symfonycasts-logo-dm.svg')] min-[1099px]:w-[240px] min-[1099px]:bg-contain mr-5" alt="SymfonyCasts Logo"></div> </a> <span class="hidden md:flex md:grow items-center"> </span> </div> <div class="font-semibold"> <nav class="space-x-1.5 sm:space-x-2 min-[812px]:space-x-3 xl:space-x-5" aria-label="main"> <div class="hidden md:inline-block" data-controller="dropdown" data-dropdown-offset-value="20" data-dropdown-placement-value="bottom" data-dropdown-close-on-click-inside-value="true" data-dropdown-use-overlay-value="false" > <a href="/courses" class="hover:text-blue-6">Tutorials</a> <button data-action="dropdown#toggle:prevent" type="button" class=""> <i class="fa-regular fa-ellipsis pl-1 hover:text-blue-6"></i> </button> <div class="z-50 absolute hidden w-auto bg-white divide-gray-100 rounded-lg shadow dark:bg-gray-700 dark:divide-gray-600 py-5 px-7" data-dropdown-target="block" > <a href="/courses" class="hover:text-blue-6"><span class="text-lg font-semibold underline">View all Courses</span> <span class="font-sm font-normal">(123)</span></a> <div class="grid grid-cols-2"> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/symfony"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #06E7FC"></i>Symfony 7</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/symfony6"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #6B02F7"></i>Symfony 6</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/symfony5"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #A6F124"></i>Symfony 5</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/rest"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #7BE89B"></i>APIs</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/js-tools"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #ED268F"></i>JavaScript Frameworks & Tools</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/javascript"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #ED268F"></i>JavaScript Fundamentals</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/testing"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #E7E517"></i>Testing</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/drupal"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #AF04F6"></i>Drupal 8</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/oo"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #3502ED"></i>OOP</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/php"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #07DBDE"></i>PHP</a> </div> <div class="py-[6px] px-[6px] font-normal"> <a class="hover:text-blue-6" href="/tracks/extras"><i class="fa-solid fa-circle-small pr-3 text-[10px]" style="color: #E645CD"></i>Dev Tools</a> </div> </div> </div> </div> <a href="/gift-card/" class="hover:text-blue-6 hidden lg:inline">Gift Card</a> <a class="hover:text-blue-6 hidden lg:inline" href="/pricing">Pricing</a> <span class="hidden lg:inline border-r border-black-3 dark:border-black-6"></span> <div class="inline-block" data-controller="dropdown" data-dropdown-offset-value="40" data-dropdown-placement-value="bottom" data-dropdown-close-on-click-inside-value="true" data-dropdown-use-overlay-value="false" > <button data-action="dropdown#toggle:prevent" type="button" class="test-notifications-bell rounded-full py-1 px-2.5 hover:bg-black-1 hover:dark:bg-black-7 active:dark:bg-blue-8 active:dark:text-blue-5 active:bg-blue-1 active:text-blue-6"> <i class="fa fa-bell fa-fw relative"> <div class="bg-red-500 border-2 border-white dark:border-black-8 rounded-full h-[10px] w-[10px] absolute right-[-2px] top-[-2px]"></div> </i> </button> <div class="z-50 absolute h-[580px] overflow-y-scroll hidden md:2w-[530px] bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700 dark:divide-gray-600 py-5 px-7 after:absolute after:content-[''] after:top-0 after:-translate-y-6 after:right-5 after:border-[12px] after:w-4 after:border-b-white after:dark:border-b-gray-700 after:border-transparent" data-dropdown-target="block" > <div class="flex justify-between"> <span class="text-lg font-semibold pb-4">Notifications</span> </div> <div class="flex pt-7"> <turbo-frame id="user-notifications-page1" src="/updates" loading="lazy" target="_top"> Loading more entries <i class="fa fa-spinner fa-spin"></i> </turbo-frame> </div> </div> </div> <a href="#" class="nav-link py-1 px-2.5 hover:text-blue-6" data-controller="dark-mode-toggle" data-dark-mode-toggle-url-value="/api/set-dark-mode" data-dark-mode-toggle-class-name-value="dark" data-action="dark-mode-toggle#toggle:prevent" ><i class="fa fa-adjust fa-fw"></i></a> <span class="whitespace-nowrap"> <a class="btn-secondary-sm mr-2 whitespace-nowrap hidden md:inline-block" href="/login">Log In</a> <a class="btn-blue-sm whitespace-nowrap inline-block" href="/signup">Sign Up</a> </span> </nav> </div> </section> <section data-mobile-menu-target="menu" class="absolute top-68 z-40 border-b border-black-2 dark:border-black-7 bg-white dark:bg-black-8 w-full text-2xl flex-col origin-top animate-open-menu hidden"> <nav class="flex flex-col justify-between min-h-screen py-8" aria-label="mobile"> <div class="flex flex-col gap-2.5 p-0"> <div data-controller="toggle" data-toggle-button-toggle-classes-value="fa-angle-down fa-angle-up" data-toggle-hidden-classes-value="h-0 py-0" data-toggle-shown-classes-value="py-5" data-toggle-transition-height-value="true" > <div class="flex justify-between px-5"> <a href="/courses" class="hover:text-blue-6"> Tutorials </a> <button data-action="toggle#toggle:prevent"> <i class="fa-regular fa-angle-down pl-2 hover:text-blue-6"></i> </button> </div> <div class="bg-black-1 dark:bg-black-7 px-5 py-5 hidden overflow-hidden transition-all duration-500" data-toggle-target="content"> <span class="text-xs font-medium">Tracks (11)</span> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/symfony"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>Symfony 7</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/symfony6"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>Symfony 6</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/symfony5"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>Symfony 5</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/rest"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>APIs</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/js-tools"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>JavaScript Frameworks & Tools</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/javascript"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>JavaScript Fundamentals</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/testing"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>Testing</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/drupal"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>Drupal 8</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/oo"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>OOP</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/php"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>PHP</a> </div> <div class="py-[6px] px-[6px] text-base font-normal"> <a class="hover:text-blue-6" href="/tracks/extras"><i class="fa-solid fa-circle-small pr-3 text-[10px]"></i>Dev Tools</a> </div> <a href="/courses" class="hover:text-blue-6"><span class="text-lg font-semibold underline">View all Courses</span> <span class="text-xs font-normal">(123)</span></a> </div> </div> <a href="/gift-card/" class="hover:text-blue-6 px-5"> Gift Card </a> <a class="hover:text-blue-6 px-5" href="/pricing">Pricing</a> </div> <div class="flex flex-col px-3"> <a class="btn-secondary-sm text-center" href="/login">Log In</a> <a class="btn-blue-sm text-center mt-2.5" href="/signup">Sign Up</a> </div> </nav> </section> </header> <main class="mx-auto"> <div class="rounded absolute z-50 bg-blue-6 text-white js-subs-sync-alert p-3" style="display:none;"> <div class="absolute w-3 h-3 m-auto -bottom-[5px] left-0 right-2 bg-inherit rotate-45"></div> <a class="text-white underline" href="/pricing">Subscribe</a> to jump to this part in the video! </div> <div data-controller="search"> <form class="relative" action="/search" data-turbo-frame="search-results" data-search-target="form" method="get"> <div class="bg-gradient-to-b from-context-blue dark:from-[#013954]"> <div class="max-w-[1400px] mx-auto pt-7 md:pt-14 px-4"> <div class="border-b border-black-3 dark:border-black-7 pb-6 md:pb-8"> <label for="search" class="mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white">Search</label> <div class="relative"> <input type="search" name="q" value="API Platform" id="search" class="md:h-20 block w-full p-4 md:text-[22px] text-gray-900 border border-gray-300 rounded-2xl bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="Search"> <button type="submit" class="btn-blue-sm md:btn-blue-lg absolute end-4 bottom-2.5 md:bottom-[1.1rem] "><span class="hidden md:inline-block">Search</span><i class="fa fa-search md:ml-2"></i></button> </div> <div class="md:flex md:justify-between pt-3 md:pt-10"> <div> <p class="pb-3 text-left md:pb-0 md:mb-0 text-xl sm:text-[32px] font-semibold"><span id="search-count">1026</span> search results for <span class="stream-search-query">API Platform</span></p> </div> <div class="flex justify-between mt-0"> <div class="md:hidden js-filter-wrapper w-1/2 pr-2"> <div data-controller="dropdown" data-dropdown-offset-value="40" data-dropdown-placement-value="bottom" data-dropdown-close-on-click-inside-value="false" data-dropdown-use-overlay-value="true" > <button data-action="dropdown#toggle:prevent" type="button" class="btn-blue-lg w-full"> <span class="sr-only">Open Filter Menu</span> <i class="fa-solid fa-filter mr-2"></i>Filter Results </button> <div class="absolute z-50 hidden w-auto bg-white rounded-lg shadow dark:bg-black-8 py-5 px-7 after:absolute after:content-[''] after:top-0 after:-translate-y-6 after:left-0 after:right-0 after:mx-auto after:border-[12px] after:w-4 after:border-b-white after:dark:border-b-black-8 after:border-transparent" data-dropdown-target="block" > <fieldset class="stream-filter" data-search-target="filter"></fieldset> </div> </div> </div> <div class="w-1/2 md:w-auto md:flex md:items-center"> <span class="text-xs uppercase border-r border-black-6 pr-4 hidden md:flex">Sort By</span> <div data-controller="dropdown" data-dropdown-offset-value="0" data-dropdown-placement-value="bottom-end" data-dropdown-close-on-click-inside-value="true" data-dropdown-use-overlay-value="false" > <button data-action="dropdown#toggle:prevent" type="button" class="md:ml-0 md:text-sm w-full btn-secondary-lg md:border-none md:bg-transparent md:hover:bg-transparent md:dark:border-none md:dark:bg-transparent md:dark:hover:bg-transparent"> <span class="sr-only">Open Sort By Menu</span> <span class="font-semibold" data-search-target="sortTitle">Most Relevant</span> <i class="fas fa-caret-down"></i> </button> <div class="absolute md:text-sm z-10 hidden w-auto bg-white divide-gray-100 rounded-lg shadow dark:bg-gray-700 dark:divide-gray-600 py-2" data-dropdown-target="block" > <ul> <li class="px-4 py-2 has-[:checked]:bg-gray-100 hover:bg-gray-100 dark:has-[:checked]:bg-gray-600 dark:hover:bg-gray-600 dark:hover:text-white cursor-pointer"> <label class="cursor-pointer" for="search-sort-relevant">Most Relevant</label> <input id="search-sort-relevant" data-action="search#sort" class="hidden" name="sort" type="radio" value="most relevant" checked> </li> <li class="px-4 py-2 has-[:checked]:bg-gray-100 hover:bg-gray-100 dark:has-[:checked]:bg-gray-600 dark:hover:bg-gray-600 dark:hover:text-white cursor-pointer"> <label class="cursor-pointer" for="search-sort-newest">Newest</label> <input id="search-sort-newest" data-action="search#sort" class="hidden" name="sort" type="radio" value="newest" > </li> <li class="px-4 py-2 has-[:checked]:bg-gray-100 hover:bg-gray-100 dark:has-[:checked]:bg-gray-600 dark:hover:bg-gray-600 dark:hover:text-white cursor-pointer"> <label class="cursor-pointer" for="search-sort-popular">Most Popular</label> <input id="search-sort-popular" data-action="search#sort" class="hidden" name="sort" type="radio" value="most popular" > </li> </ul> </div> </div> </div> </div> </div> </div> </div> </div> <div class="max-w-[1400px] mx-auto pt-8 px-4"> <div class="grid grid-cols-4"> <div class="hidden md:block md:col-span-1 js-filter-wrapper"> <fieldset class="stream-filter" data-search-target="filter"></fieldset> </div> <div class="col-span-4 md:col-span-3 test-search-results"> <turbo-frame id="search-results" data-turbo-action="advance"> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> </div> <a href="/screencast/api-platform2-security" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform Part 2 Security</h5></a> <p class="line-clamp-3">Yep! You 鉂わ笍your new <mark>API</mark> <mark>Platform</mark>-powered <mark>API</mark>! It's just missing... well... any type of security! This is a big & important topic, so let's take it head-on in part 2 of our <mark>API</mark> <mark>Platform</mark> tutorial: <mark>API</mark> token security? Or ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>39 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>4:45:13</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> </div> <a href="/screencast/api-platform2" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform 2 Part 1 Serious RESTful APIs</h5></a> <p class="line-clamp-3"><mark>API</mark> <mark>Platform</mark> is crushing the scene these days. And it's easy to see why! Built on top of Symfony, <mark>API</mark> <mark>Platform</mark> enables you to build a rich, JSON-LD-powered, hypermedia <mark>API</mark>... pretty much instantly! In this tutorial ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>27 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>2:54:11</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/rest" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn APIs</p></a> </div> <a href="/screencast/api-platform" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform 3 Part 1 Mythically Good RESTful APIs</h5></a> <p class="line-clamp-3">Need to build an <mark>API</mark> and love the process? You've come to the right place. Built on top of Symfony, <mark>API</mark> <mark>Platform</mark> enables you to build a rich, JSON-LD-powered, hypermedia <mark>API</mark>... pretty much instantly (we'll even teach ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>28 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>2:51:42</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/rest" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn APIs</p></a> </div> <a href="/screencast/api-platform-security" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform 3 Part 2 Security for your Treasures</h5></a> <p class="line-clamp-3">Here be dragons! We've built a pretty sweet <mark>API</mark> for storing dragon treasures... but we've completely neglected one minor detail: security! In this tutorial, we'll secure our <mark>API</mark> <mark>Platform</mark>-powered <mark>API</mark> in every way ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>37 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>3:43:31</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/rest" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn APIs</p></a> </div> <a href="/screencast/api-platform-extending" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform 3 Part 3 Custom Resources</h5></a> <p class="line-clamp-3">... Data transformation with symfonycasts/micro-mapper IGNORED_ATTRIBUTES, security & other tricks to avoid serialization groups Embedded objects (including non-ApiResource objects) Pagination for DTO resources Woh. If you thought you were dangerous before with <mark>API</mark> <mark>Platform</mark>, just wait... </p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>36 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>3:44:20</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> </div> <a href="/screencast/api-platform2-extending" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform 2 Part 3 Custom Resources</h5></a> <p class="line-clamp-3">Welcome to part 3 of the <mark>Api</mark> <mark>Platform</mark> series! In part 1, we built a fully-featured <mark>API</mark>. Then in part 2 we leveled-up by adding a robust security system, security checks and user-specific fields. So what's left? In part ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>48 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>5:13:28</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/conferences" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Symfony Conference Presentations</p></a> <span>></span> <a href="/screencast/symfonycon2018" data-turbo-frame="_top"><p>SymfonyCon 2018 Lisbon Conference Videos</p></a> </div> <a href="/screencast/symfonycon2018/power-sf-components-apiplatform" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Leverage the power of Symfony components within ApiPlatform</h5></a> <p class="line-clamp-3">Hello! Welcome to my talk about leveraging the power of Symfony within <mark>API</mark> <mark>Platform</mark>. So first thing first I'm going to introduce myself. So I'm Antoine Bluchet also known as soyuka online. And I'm core contributor to ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>27:45</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> <span>></span> <a href="/screencast/api-platform2" data-turbo-frame="_top"><p>API Platform 2 Part 1: Serious RESTful APIs</p></a> </div> <a href="/screencast/api-platform2/install" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform Installation</h5></a> <p class="line-clamp-3">... Yo friends! It's time to talk about... drum roll... how to bake a delicious cake that looks like an Oreo. Wait... ah! Wrong tutorial. It's time to talk about <mark>API</mark> <mark>Platform</mark>... so fun, it's almost as delicious as a cake ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>6:42</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/rest" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn APIs</p></a> <span>></span> <a href="/screencast/api-platform" data-turbo-frame="_top"><p>API Platform 3 Part 1: Mythically Good RESTful APIs</p></a> </div> <a href="/screencast/api-platform/install" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Installing API Platform</h5></a> <p class="line-clamp-3">... <mark>Platform</mark> Version 3, which I promise is as fun as playing with Legos. Just don't tell my son I said that. <mark>API</mark> <mark>Platform</mark> is, very simply, a tool on top of Symfony that allows us to build powerful APIs and love the process! It's ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>7:29</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/conferences" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Symfony Conference Presentations</p></a> <span>></span> <a href="/screencast/paris2019" data-turbo-frame="_top"><p>Symfony Live Paris 2019 (French)</p></a> </div> <a href="/screencast/paris2019/lecon-n-139-api-platform-ce-nest-bon-qua-faire-un-poc-faux" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Le莽on N 139 API Platform ce n'est bon qu faire un POC FAUX Gr茅goire H茅bert</h5></a> <p class="line-clamp-3">La premi猫re chose qui est mise en avant avec <mark>API</mark> <mark>Platform</mark> c'est la capacit茅 de faire du d茅veloppement rapide d'application. C'est vrai. 脟a ne signifie pas pour autant qu'il est impossible de r茅aliser une application ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>33:21</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/conferences" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Symfony Conference Presentations</p></a> <span>></span> <a href="/screencast/lille2019" data-turbo-frame="_top"><p>Symfony Live Lille 2019 (French)</p></a> </div> <a href="/screencast/lille2019/api-platform-ce-nest-bon-qua-faire-un-poc-faux" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">API Platform ce n'est bon qu faire un POC FAUX Gr茅goire H茅bert</h5></a> <p class="line-clamp-3">La premi猫re chose qui est mise en avant avec <mark>API</mark> <mark>Platform</mark> c'est la capacit茅 de faire du d茅veloppement rapide d'application. C'est vrai. 脟a ne signifie pas pour autant qu'il est impossible de r茅aliser une application ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>33:21</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/rest" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn APIs</p></a> <span>></span> <a href="/screencast/api-platform-extending" data-turbo-frame="_top"><p>API Platform 3 Part 3: Custom Resources</p></a> </div> <a href="/screencast/api-platform-extending/install" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Setup Ways to Extend API Platform</h5></a> <p class="line-clamp-3">Fasten your scales, dragon enthusiasts! It's time to dive into the third episode of our riveting <mark>API</mark> <mark>Platform</mark> saga: the episode where things get... let's say: more advanced and interesting. Episode 1 was our intro, and ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>4:39</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> <span>></span> <a href="/screencast/api-platform2-security" data-turbo-frame="_top"><p>API Platform Part 2: Security</p></a> </div> <a href="/screencast/api-platform2-security/backport-api-tests" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Backport the API Platform 2.5 Test Tools</h5></a> <p class="line-clamp-3">... JSON has the right keys. <mark>API</mark> <mark>platform</mark> recently introduced some really nice tools for doing all this. In fact it was so recent that... they're not released yet! When I run: composer ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>5:01</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/conferences" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Symfony Conference Presentations</p></a> <span>></span> <a href="/screencast/symfonycon2019" data-turbo-frame="_top"><p>SymfonyCon 2019 Amsterdam Conference Videos</p></a> </div> <a href="/screencast/symfonycon2019/using-api-platform-to-build-ticketing-system" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Using API Platform to build ticketing system Antonio Peric-Mazar</h5></a> <p class="line-clamp-3">... 5 in production? There is a guy, okay. Who is using <mark>API</mark> <mark>platform</mark>. Okay. Like 30% of the people. Cool. Uh, so my name is Antonio Peri膰-Ma啪ar. I'm from Croatia from split. I'm the CEO of Locastic. I'm also co founder of ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>38:25</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/js-tools" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn JS Frameworks & Tools</p></a> <span>></span> <a href="/screencast/vue" data-turbo-frame="_top"><p>The Delightful World of Vue</p></a> </div> <a href="/screencast/vue/setup" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Encore Symfony API Platform</h5></a> <p class="line-clamp-3">... server-side-generated page. The second important thing about our app is that it already has a really nice <mark>API</mark>. You can see its docs if you go to https://localhost:8000/<mark>api</mark>. We built this with my favorite <mark>API</mark> tool: <mark>API</mark> ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>7:15</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/conferences" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Symfony Conference Presentations</p></a> <span>></span> <a href="/screencast/symfonycon2018" data-turbo-frame="_top"><p>SymfonyCon 2018 Lisbon Conference Videos</p></a> </div> <a href="/screencast/symfonycon2018/api-platform-ftw" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Modern Application Built from Scratch API Platform FTW</h5></a> <p class="line-clamp-3"></p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>34:25</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> <span>></span> <a href="/screencast/api-platform2" data-turbo-frame="_top"><p>API Platform 2 Part 1: Serious RESTful APIs</p></a> </div> <a href="/screencast/api-platform2/operations" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Operations</h5></a> <p class="line-clamp-3">... Let's get to work customizing our <mark>API</mark>. A RESTful <mark>API</mark> is all about resources. We have one resource - our CheeseListing - and, by default, <mark>API</mark> <mark>Platform</mark> generated 5 endpoints for it. These are called "operations ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>5:21</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/rest" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn APIs</p></a> <span>></span> <a href="/screencast/api-platform" data-turbo-frame="_top"><p>API Platform 3 Part 1: Mythically Good RESTful APIs</p></a> </div> <a href="/screencast/api-platform/swagger" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Swagger UI Interactive Docs</h5></a> <p class="line-clamp-3">The amazing interactive documentation that we've stumbled across is not something from <mark>API</mark> <mark>platform</mark>! Nope, it's actually an open-source <mark>API</mark> documentation library called Swagger UI. And the really cool thing about ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>6:41</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-course ">Course</span></div> <a href="/tracks/conferences" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Symfony Conference Presentations</p></a> </div> <a href="/screencast/symfonycon2018" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">SymfonyCon 2018 Lisbon Conference Videos</h5></a> <p class="line-clamp-3">... Symfony web server, to Messenger, to <mark>API</mark> <mark>Platform</mark> and so much more. Ready to watch (or re-watch) the presentations? The videos are now available to everyone. </p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-play-circle mr-2"></i>27 videos</div> <span>|</span> <div><i class="fas fa-clock mr-2"></i>16:38:22</div> </div> </div> <div class="border-b border-black-3 dark:border-black-6 pb-8 mt-8"> <div class="flex space-x-2 text-sm"> <div class="font-medium text-black-9"><span class="px-1 rounded bg-tags-video">Video</span></div> <a href="/tracks/symfony5" data-turbo-frame="_top"><p class="text-sm text-black-6 dark:text-black-2">Learn Symfony 5</p></a> <span>></span> <a href="/screencast/api-platform2" data-turbo-frame="_top"><p>API Platform 2 Part 1: Serious RESTful APIs</p></a> </div> <a href="/screencast/api-platform2/swagger" data-turbo-frame="_top"><h5 class="font-semibold text-[22px] underline my-1.5">Swagger Instant Interactive API Docs</h5></a> <p class="line-clamp-3">... create some configuration that describes that <mark>API</mark> in a format that Swagger understands, boom! Swagger can render this beautiful interactive documentation for you. Behind the scenes, <mark>API</mark> <mark>Platform</mark> is already preparing that ...</p> <div class="flex space-x-2 text-xs mt-5 font-medium uppercase"> <div><i class="fas fa-clock mr-2"></i>8:32</div> </div> </div> <div class="navigation"> <div class="inline-block mt-4"> <div class="flex items-baseline flex-row rounded-sm w-auto space-x-2"> <span class="bg-blue-6 cursor-pointer hover:bg-blue-7 hover:dark:bg-blue-7 text-white px-3 py-2 rounded-lg font-semibold">1</span> <a href="/search?q=API%20Platform&page=2"> <span class="text-blue-6 cursor-pointer hover:bg-black-1 hover:dark:bg-black-7 px-3 py-2 border border-black-2 dark:border-black-7 rounded-lg font-semibold"> 2 </span> </a> <a href="/search?q=API%20Platform&page=3"> <span class="text-blue-6 cursor-pointer hover:bg-black-1 hover:dark:bg-black-7 px-3 py-2 border border-black-2 dark:border-black-7 rounded-lg font-semibold"> 3 </span> </a> <a href="/search?q=API%20Platform&page=4"> <span class="text-blue-6 cursor-pointer hover:bg-black-1 hover:dark:bg-black-7 px-3 py-2 border border-black-2 dark:border-black-7 rounded-lg font-semibold"> 4 </span> </a> <a href="/search?q=API%20Platform&page=5"> <span class="text-blue-6 cursor-pointer hover:bg-black-1 hover:dark:bg-black-7 px-3 py-2 border border-black-2 dark:border-black-7 rounded-lg font-semibold"> 5 </span> </a> <span class="text-blue-6 cursor-pointer hover:bg-black-1 hover:dark:bg-black-7 px-3 py-2 border border-black-2 dark:border-black-7 rounded-lg font-semibold"> <a rel="next" href="/search?q=API%20Platform&page=2"><i class="fa-regular fa-angle-right"></i></a> </span> <span class="text-blue-6 cursor-pointer hover:bg-black-1 hover:dark:bg-black-7 px-3 py-2 border border-black-2 dark:border-black-7 rounded-lg font-semibold"> <a href="/search?q=API%20Platform&page=52"><i class="fa-regular fa-angles-right"></i></a> </span> </div> </div> </div> <turbo-stream action="update" target="search-count"> <template>1026</template> </turbo-stream> <turbo-stream action="update" targets=".stream-search-query"> <template>API Platform</template> </turbo-stream> <turbo-stream action="update" targets=".stream-filter"> <template> <span class="text-sm">Filter Results</span> <div class="flex items-center my-3"> <label> <input type="checkbox" data-action="search#filter" name="types[]" value="track" disabled class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Tracks </span><span class="text-sm">(0)</span> </label> </div> <div class="flex items-center my-3"> <label> <input type="checkbox" data-action="search#filter" name="types[]" value="course" class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Courses </span><span class="text-sm">(10)</span> </label> </div> <div class="flex items-center my-3"> <label> <input type="checkbox" data-action="search#filter" name="types[]" value="video" class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Videos </span><span class="text-sm">(185)</span> </label> </div> <div class="flex items-center my-3"> <label> <input type="checkbox" data-action="search#filter" name="types[]" value="code_block" class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Code </span><span class="text-sm">(6)</span> </label> </div> <div class="flex items-center my-3"> <label> <input type="checkbox" data-action="search#filter" name="types[]" value="comment" class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Comments </span><span class="text-sm">(824)</span> </label> </div> <div class="flex items-center my-3"> <label> <input type="checkbox" data-action="search#filter" name="types[]" value="blog" class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Blog Posts </span><span class="text-sm">(1)</span> </label> </div> <hr class="w-1/2 border-black-3 dark:border-black-6"> <div class="flex items-center my-3"> <span data-controller="tooltip" data-tooltip-offset-value="10" data-tooltip-placement-value="top" data-action="focusin->tooltip#mouseEnter focusout->tooltip#mouseLeave" > <label> <input type="checkbox" disabled class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Watched</span> </label> <div data-tooltip-target="block" class=" hidden absolute z-50 inline-block p-2 text-sm text-gray-500 duration-300 bg-white border border-gray-200 rounded-lg shadow-sm dark:text-gray-400 dark:bg-gray-800 dark:border-gray-600"> <div class="text-center" data-tooltip-target="content">Login to access this filter</div> <div data-tooltip-target="arrow" class="w-[10px] h-[10px] z-10 absolute bg-white border-t border-l border-gray-200 dark:border-gray-600 dark:bg-gray-800"></div> </div> </span> </div> <div class="flex items-center my-3"> <span data-controller="tooltip" data-tooltip-offset-value="10" data-tooltip-placement-value="bottom" data-action="focusin->tooltip#mouseEnter focusout->tooltip#mouseLeave" > <label> <input type="checkbox" disabled class="w-5 h-5 cursor-pointer disabled:cursor-default disabled:bg-black-1 dark:disabled:bg-black-7 dark:checked:text-blue-6 dark:checked:bg-current text-blue-6 bg-white border-black-2 rounded dark:bg-black-9 dark:border-black-6" > <span class="ms-2 font-semibold align-middle">Unwatched</span> </label> <div data-tooltip-target="block" class=" hidden absolute z-50 inline-block p-2 text-sm text-gray-500 duration-300 bg-white border border-gray-200 rounded-lg shadow-sm dark:text-gray-400 dark:bg-gray-800 dark:border-gray-600"> <div class="text-center" data-tooltip-target="content">Login to access this filter</div> <div data-tooltip-target="arrow" class="w-[10px] h-[10px] z-10 absolute bg-white border-t border-l border-gray-200 dark:border-gray-600 dark:bg-gray-800"></div> </div> </span> </div> </template> </turbo-stream> </turbo-frame> </div> </div> </div> </form> </div> </main> <footer class="my-10 max-w-7xl mx-auto border-t border-black-2 dark:border-black-6 px-5"> <section class="flex flex-col md:flex-row md:justify-between mb-16 pt-11"> <div> <div class="bg-[url('../images/symfonycasts-logo-dm.svg')] w-[65px] h-[55px] bg-cover bg-no-repeat" alt="SymfonyCasts Logo"></div> <div class="text-[32px] font-semibold mt-4 mb-8 dark:text-white">Where learning is really fun.</div> <div class="text-xs min-[500px]:text-base flex"> <div><a href="/contact" class="btn-secondary-lg whitespace-nowrap">Get in touch<i class="fa-solid fa-envelope pl-2.5"></i></a></div> <div><a href="/pricing" class="btn-blue-lg ml-3 whitespace-nowrap">All Access Pass<i class="fa-solid fa-bolt-lightning pl-2.5"></i></a></div> </div> </div> <div class="flex flex-row mt-6 md:mt-0"> <div class="mr-16"> <ul class="text-[22px] font-semibold dark:text-white"> <li class="pb-3"><a href="/courses#all" class="hover:text-blue-6">Courses</a></li> <li class="pb-3"><a href="/courses#tracks" class="hover:text-blue-6">Tracks</a></li> <li class="pb-3"><a href="/pricing" class="hover:text-blue-6">Pricing</a></li> <li class="pb-3"><a href="/gift-card/" class="hover:text-blue-6">Gift Card</a></li> <li class="pb-3"><a href="/blog" class="hover:text-blue-6">Blog</a></li> </ul> </div> <div> <ul class="text-sm pt-2.5 dark:text-black-4"> <li class="pb-3"><a href="/faq" class="hover:text-blue-6">FAQ</a></li> <li class="pb-3"><a href="/faq" class="hover:text-blue-6">About</a></li> <li class="pb-3"><a href="/terms" class="hover:text-blue-6">Terms</a> <span>&</span> <a href="/privacy" class="hover:text-blue-6">Privacy</a></li> <li class="pb-3"><a href="/courses?status=upcoming&sort=popular#all" class="hover:text-blue-6">Roadmap</a></li> <li class="pb-3"><a href="/contact" class="hover:text-blue-6">Contact</a></li> </ul> </div> </div> </section> <section class="flex flex-col md:flex-row md:justify-between"> <div class="dark:text-white"> <a href="https://github.com/SymfonyCasts" class="hover:text-blue-6"><i class="fa-brands fa-github pr-8"></i></a> <a href="https://twitter.com/SymfonyCasts" class="hover:text-blue-6"><i class="fa-brands fa-x-twitter pr-8"></i></a> <a href="https://www.facebook.com/SymfonyCasts/" class="hover:text-blue-6"><i class="fa-brands fa-facebook-f pr-8"></i></a> <a href="https://www.linkedin.com/company/symfonycasts/" class="hover:text-blue-6"><i class="fa-brands fa-linkedin pr-8"></i></a> <span>Powered by <span class="text-blue-6">KnpUniversity</span></span> </div> <div> <p class="dark:text-black-4 mt-6 md:mt-0">Hosted with <i class="fa-solid fa-heart text-red-600"></i> on <a href="https://symfony.com/cloud/" class="underline hover:text-blue-6">platform.sh</a></p> </div> </section> </footer> </body> </html>