Chapters
48 Chapters
|
5:13:28
|
Login to bookmark this video
-
Course Code
Subscribe to download the code!
Subscribe to download the code!
-
This Video
Subscribe to download the video!
Subscribe to download the video!
-
Subtitles
Subscribe to download the subtitles!
Subscribe to download the subtitles!
-
Course Script
Subscribe to download the script!
Subscribe to download the script!
15.
Doctrine postLoad Listener
Scroll down to the script below, click on any sentence (including terminal blocks) to jump to that spot in the video!
Subscribe to jump to this part in the video!
Keep on Learning!
If you liked what you've learned so far, dive in! Subscribe to get access to this tutorial plus video, code and script downloads.
This tutorial also works great with API Platform 2.6.
What PHP libraries does this tutorial use?
// composer.json
{
"require": {
"php": ">=8.2",
"ext-ctype": "*",
"ext-iconv": "*",
"api-platform/core": "^2.1", // v2.5.10
"composer/package-versions-deprecated": "^1.11", // 1.11.99
"doctrine/annotations": "^1.0", // 1.12.1
"doctrine/doctrine-bundle": "^2.0", // 2.1.2
"doctrine/doctrine-migrations-bundle": "^3.0", // 3.0.2
"doctrine/orm": "^2.4.5", // 2.8.2
"nelmio/cors-bundle": "^2.1", // 2.1.0
"nesbot/carbon": "^2.17", // 2.39.1
"phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.0", // 5.2.2
"ramsey/uuid-doctrine": "^1.6", // 1.6.0
"symfony/asset": "5.1.*", // v5.1.5
"symfony/console": "5.1.*", // v5.1.5
"symfony/debug-bundle": "5.1.*", // v5.1.5
"symfony/dotenv": "5.1.*", // v5.1.5
"symfony/expression-language": "5.1.*", // v5.1.5
"symfony/flex": "^1.1", // v1.21.6
"symfony/framework-bundle": "5.1.*", // v5.1.5
"symfony/http-client": "5.1.*", // v5.1.5
"symfony/monolog-bundle": "^3.4", // v3.5.0
"symfony/security-bundle": "5.1.*", // v5.1.5
"symfony/twig-bundle": "5.1.*", // v5.1.5
"symfony/validator": "5.1.*", // v5.1.5
"symfony/webpack-encore-bundle": "^1.6", // v1.8.0
"symfony/yaml": "5.1.*" // v5.1.5
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.3", // 3.3.2
"symfony/browser-kit": "5.1.*", // v5.1.5
"symfony/css-selector": "5.1.*", // v5.1.5
"symfony/maker-bundle": "^1.11", // v1.23.0
"symfony/phpunit-bridge": "5.1.*", // v5.1.5
"symfony/stopwatch": "5.1.*", // v5.1.5
"symfony/twig-bundle": "5.1.*", // v5.1.5
"symfony/web-profiler-bundle": "5.1.*", // v5.1.5
"zenstruck/foundry": "^1.1" // v1.8.0
}
}
7 Comments
Hello,
In some way, can we say that DataProvider/DataPersiter are to APIPlatform as Doctrine Entity Listener are to Doctrine?
Hey @keuwa
That's an interesting question. Let's see the responsibilities of every service:
preUpdate()event and create all the necessary records.So, I'd say no, those are different things.
Does it makes sense to you? Cheers!
Hi,
thanks for the anwser and btw your courses are neat!
As you say, the DoctrineEntityListeners is purely a place for hooking point.
But you're using UserDataPersister exactly for placing some HOOK on the persist.
The difference is you became responsible for persisting/removing data. But in reality, you just decorate the existing DataPersisterInterface and delegate this to doctrine.
Is that correct?
Hey @keuwa!
Thanks for the nice words :).
So what Diego said is true: data persisters are responsible for the entire saving process... while entity listeners are "hook points". But, you're also correct that we're *using* data persisters in this tutorial *as* a hook point: we do something, then call the core persister so that it can do the *real* work. So in that sense, the two concepts are very similar.
When would I use one vs the other? It's not an easy question to answer. If what we need to do in our hook is something "pure" and "low level" (like making some calculation, logging something, etc), then I like the doctrine listeners. But if what you're doing is more related to your API (e.g. sending emails after a new user registers), then I would do it there. I wouldn't want a registration email to be sent automatically if I were doing some bulk data import of legacy users... and my "entity listener" suddenly triggered and emailed all of them.
Anyways, I hope that makes sense!
Cheers!
Ok, get it, thanks!
"Houston: no signs of life"
Start the conversation!