Flag of Ukraine
SymfonyCasts stands united with the people of Ukraine

EasyAdmin! For an Awesomely Powerful Admin Area

4:19:16

What you'll be learning

// composer.json
{
    "require": {
        "php": ">=8.0.2",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "composer/package-versions-deprecated": "^1.11", // 1.11.99.4
        "doctrine/doctrine-bundle": "^2.1", // 2.5.5
        "doctrine/doctrine-migrations-bundle": "^3.0", // 3.2.1
        "doctrine/orm": "^2.7", // 2.10.4
        "easycorp/easyadmin-bundle": "^4.0", // v4.0.2
        "handcraftedinthealps/goodby-csv": "^1.4", // 1.4.0
        "knplabs/knp-markdown-bundle": "dev-symfony6", // dev-symfony6
        "knplabs/knp-time-bundle": "^1.11", // 1.17.0
        "sensio/framework-extra-bundle": "^6.0", // v6.2.5
        "stof/doctrine-extensions-bundle": "^1.4", // v1.7.0
        "symfony/asset": "6.0.*", // v6.0.1
        "symfony/console": "6.0.*", // v6.0.2
        "symfony/dotenv": "6.0.*", // v6.0.2
        "symfony/flex": "^2.0.0", // v2.0.1
        "symfony/framework-bundle": "6.0.*", // v6.0.2
        "symfony/mime": "6.0.*", // v6.0.2
        "symfony/monolog-bundle": "^3.0", // v3.7.1
        "symfony/runtime": "6.0.*", // v6.0.0
        "symfony/security-bundle": "6.0.*", // v6.0.2
        "symfony/stopwatch": "6.0.*", // v6.0.0
        "symfony/twig-bundle": "6.0.*", // v6.0.1
        "symfony/ux-chartjs": "^2.0", // v2.0.1
        "symfony/webpack-encore-bundle": "^1.7", // v1.13.2
        "symfony/yaml": "6.0.*", // v6.0.2
        "twig/extra-bundle": "^2.12|^3.0", // v3.3.7
        "twig/twig": "^2.12|^3.0" // v3.3.7
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.3", // 3.4.1
        "symfony/debug-bundle": "6.0.*", // v6.0.2
        "symfony/maker-bundle": "^1.15", // v1.36.4
        "symfony/var-dumper": "6.0.*", // v6.0.2
        "symfony/web-profiler-bundle": "6.0.*", // v6.0.2
        "zenstruck/foundry": "^1.1" // v1.16.0
    }
}
// composer.json
{
    "require": {
        "php": ">=8.0.2",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "composer/package-versions-deprecated": "^1.11", // 1.11.99.4
        "doctrine/doctrine-bundle": "^2.1", // 2.5.5
        "doctrine/doctrine-migrations-bundle": "^3.0", // 3.2.1
        "doctrine/orm": "^2.7", // 2.10.4
        "easycorp/easyadmin-bundle": "^4.0", // v4.0.2
        "handcraftedinthealps/goodby-csv": "^1.4", // 1.4.0
        "knplabs/knp-markdown-bundle": "dev-symfony6", // dev-symfony6
        "knplabs/knp-time-bundle": "^1.11", // 1.17.0
        "sensio/framework-extra-bundle": "^6.0", // v6.2.5
        "stof/doctrine-extensions-bundle": "^1.4", // v1.7.0
        "symfony/asset": "6.0.*", // v6.0.1
        "symfony/console": "6.0.*", // v6.0.2
        "symfony/dotenv": "6.0.*", // v6.0.2
        "symfony/flex": "^2.0.0", // v2.0.1
        "symfony/framework-bundle": "6.0.*", // v6.0.2
        "symfony/mime": "6.0.*", // v6.0.2
        "symfony/monolog-bundle": "^3.0", // v3.7.1
        "symfony/runtime": "6.0.*", // v6.0.0
        "symfony/security-bundle": "6.0.*", // v6.0.2
        "symfony/stopwatch": "6.0.*", // v6.0.0
        "symfony/twig-bundle": "6.0.*", // v6.0.1
        "symfony/ux-chartjs": "^2.0", // v2.0.1
        "symfony/webpack-encore-bundle": "^1.7", // v1.13.2
        "symfony/yaml": "6.0.*", // v6.0.2
        "twig/extra-bundle": "^2.12|^3.0", // v3.3.7
        "twig/twig": "^2.12|^3.0" // v3.3.7
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.3", // 3.4.1
        "symfony/debug-bundle": "6.0.*", // v6.0.2
        "symfony/maker-bundle": "^1.15", // v1.36.4
        "symfony/var-dumper": "6.0.*", // v6.0.2
        "symfony/web-profiler-bundle": "6.0.*", // v6.0.2
        "zenstruck/foundry": "^1.1" // v1.16.0
    }
}

So... your site needs an admin area. Do yourself a favor and skip all that custom code and jump straight into EasyAdmin bundle. Why #1? Because it'll take you a fraction of the time to build what you need. Why #2? Because it'll be even better than what you would build by hand, including built-in widgets for auto-completion and toggling boolean fields. It's... pretty sweet.

In this tutorial, we'll learn how to admin interfaces that are highly customized:

  • Install & Bootstrapping the bundle
  • Dashboards! CRUD controllers!
  • All about Fields
  • Customize everything: what properties to display, how they render, help messages, sorting, filters... and more!
  • Override templates... at many different levels
  • Take control of your forms
  • Handling security
  • Adding custom actions (and removing others)
  • Updating and configuring the menu (like adding a link to kitten videos!)
  • Hooking into events to do things before or after an entity is saved
  • Adding custom CSS/JS behaviors to the page with Webpack Encore
  • ... and more

So let's do a little bit of work for a lotta bit results (note: "lotta bit" is a term I just made up).

Tip

Love EasyAdmin? Consider sponsoring its maintainer Javier Eguiluz!


Your Guides

Victor Bocharsky Ryan Weaver

Buy Access
Login or register to track your progress!

Join the Conversation?

23
Login or Register to join the conversation
JoshuaGugun Avatar
JoshuaGugun Avatar JoshuaGugun | posted 7 months ago

Hi Knp lecturers,
thank you for this great tutorial.

I'm starting to learn symfony 6.
Looking forward for next symfony 6 track tutorial

1 Reply

Hey Suabahasa!

Thank you for your interest in SymfonyCasts tutorials and your feedback! Good time to start learning it ;) We're going to release a few more Symfony 6 tutorials shortly, and then we will create a Sf6 track - we just need at least a few courses there :) Thank you for your patience!

Cheers!

1 Reply
Christina-V Avatar
Christina-V Avatar Christina-V | posted 5 days ago

Hi all,

What will be the best option , in order to use a function in a specific repository, for the index action ?

Reply

Hey Christina,

It depends on what you're trying to achieve but I think a good way would be to override the createIndexQueryBuilder() method

Cheers!

Reply
mofogasy Avatar
mofogasy Avatar mofogasy | posted 2 months ago

Hello,
your explanation is great. I want to extend this overriding possibility for my project.
I have 1 entity for article joined to another entity for images. 1 article can have many images.

when adding images to an article, I'd like to display the images and selecting them instead of just displaying their filename.
I have been trying with AssociationField but I can't get it.
Could you help me please ?

Reply
Huib B. Avatar

Symfony redirects to login page after successful login on chrome and logs out. This behavior is in some versions of chrome but not in Firefox, Edge or Safari although chrome does work in private mode and chrome (Version 105.0.5145.0) works even without private mode, any idea why login fails in chrome?

Reply

Hey Huib,

That's weird... especially the fact that it works in Chrome incognito mode but doesn't work in Chrome regular mode. It makes me think that you may have some extensions installed that causes this problem somehow. Most probably those Chrome extensions do not work in incognito mode (the default behavior) and that's why it works there - the only logical explanation about what's going on. I'd recommend you to turn off all the chrome extensions and try again. Also, try to upgrade your Chrome to the latest first. If the issue still persist - then I'm not sure. Well, you may want to open the Chrome dev toolbar, then long click on "reload" button (about 3 seconds) and choose "Empty cache and hard reload" - it might help sometimes.

I hope this helps!

Cheers!

Reply

Thanks for these tutorials. I am awaiting for your latest videos every single day!

Reply

Hey Lubna,

Thanks for the feedback! We are working to get it as soon as we can :-)

Thanks for staying with us!

Cheers!

3 Reply
Ruslan Avatar

26th December in five hours. We are waiting for! :)
Thank you for your casts, it's very helpful.

Reply

Hey Ruslan!

Sorry for some delays... Unfortunately, Christmas and new year schedule made some adjustments in the release schedule on SymfonyCasts, but this course will be the next for sure. Thank you for your patience! :)

Cheers!

Reply
Peter A. Avatar
Peter A. Avatar Peter A. | posted 9 months ago

Hi,
Do we have a date for release ? It's mentioned below that it'd be ready around December 2021..?

Thanks
Peter

Reply

Hey Peter,

Yes, it should be started releasing right after the Symfony 5 Security course which should be fully released in about a week... but considering some Christmas / new year eve holidays it might be started in early January I think. But this course will be definitely the next one we're going to release ;)

Thank you for your patience!

Cheers!

Reply
Peter A. Avatar

thanks much, looking forward.

Reply

Hey Peter!

I have more top-secret news for you! We're super close to start releasing this course - yay! And we even prepared a little surprise in this course - you will see it when we start releasing :) Btw, I think it may happen on the next week, or in 2 weeks max from now. We're finishing releasing our Symfony 5 Security course in full this week, and then will switch to EA completely :)

Thanks a lot for your patience!

Cheers!

Reply
Fabrice Avatar

Hey ! So, what's about this surprise? :D

Reply

Hey Kiuega!

Ha, good question, and I'm happy you remembered about it :) So, basically, as you might notice already, we're going to cover EasyAdminBundle v4 instead of v3 as it was planned, that's based on the newest Symfony 6! So, that's the little surprise I was talking about, and I hope you're not disappointed about it ;)

Cheers!

Reply
Kiuega Avatar

Hello ! I intend to take advantage of the black friday offer to subscribe for a month to take advantage of the training on EasyAdmin 3. Do you think that it will be fully published before December 26, 2021?

Reply

Hey Kiuega,

We do plan to start releasing it in December, but I'm not sure it will be completely published until December 26. It depends on how many chapters it will have, and when exactly we will start, but most probably it will be completely released in January only.

Cheers!

Reply
Abdul M. Avatar

any tutorial series coming on CQRS, DDD, Microservices with Symfony and Redis with Symfony Framework!

Reply

Hey abdul mobeen

For the moment we do not have any plans on releasing a tutorial about those topics but thanks for letting us know what you'd like to learn next

Cheers!

Reply
Kiuega Avatar

Damn ! This tutorial that has been requested for so long! We can't wait for him to come out!

Reply

Hey Kiuega!

I'm happy to let you know that we're actively working on this tutorial right now :) Thank you for your interest in SymfonyCasts tutorials and your patience!

Cheers!

Reply
Cat in space

"Houston: no signs of life"
Start the conversation!