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!
06.
Detecting the "Published" State Change
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
}
}
6 Comments
Hy! Great tutorials!
Why would it be that when I make $this->entityManager->getUnitOfWork()->getOriginalEntityData($data) I get the already updated data instead of the original?
Hey @federush
There might be a moment that data was not cleaned between tests and you are getting previously updated data. First try a clean run with this test only.
Cheers!
there and what about the filtering for non-mapped properties, can you help me with that?How can I filter the collection based on the value of non mapped property?E.g. property is a boolean field
Hey Anton B.!
Sorry for the slow reply - I had some time off this week :). Are you talking about ApiFilters? Lime being able to have a ?published=0 query parameter to filter the collection? I've never tried it, but based on your question, I'm guessing that the normal BooleanFilter doesn't work for non-mapped properties? https://symfonycasts.com/sc...
If that does not work for non-mapped properties, then I think you would need to create your own, custom filter: https://symfonycasts.com/sc...
I hope that helps!
Cheers!
why we need to put logic on datapersister instead of event subscriber with interface ? for example for hash password we can implement HashPassword interface to user entity and get it in event subscriber .
Hey Ali K.!
Excellent question :). I assume that you're thinking about a listener on kernel.view with a PRE_WRITE priority (so that it happens right before the data persister is called). I don't see any problem with that. The data persister solution is preferred over listeners because listeners only happen for the REST API and don't work the same for the GraphQL implementation... but that probably isn't a problem in most situations :).
Cheers!
"Houston: no signs of life"
Start the conversation!