Chapters
48 Chapters
|
5:05:05
|
Login to bookmark this video
-
Course Code
Subscribe to download the code!Compatible PHP versions: ^7.1.3
Subscribe to download the code!Compatible PHP versions: ^7.1.3
-
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!
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 is built with Symfony 4.3, but will work well on Symfony 4.4 or 5.
What PHP libraries does this tutorial use?
// composer.json
{
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"composer/package-versions-deprecated": "^1.11", // 1.11.99
"doctrine/annotations": "^1.0", // v1.8.0
"doctrine/doctrine-bundle": "^1.6.10", // 1.11.2
"doctrine/doctrine-migrations-bundle": "^1.3|^2.0", // v2.0.0
"doctrine/orm": "^2.5.11", // v2.6.3
"intervention/image": "^2.4", // 2.4.2
"league/flysystem-bundle": "^1.0", // 1.1.0
"phpdocumentor/reflection-docblock": "^3.0|^4.0", // 4.3.1
"sensio/framework-extra-bundle": "^5.3", // v5.3.1
"symfony/console": "4.3.*", // v4.3.2
"symfony/dotenv": "4.3.*", // v4.3.2
"symfony/flex": "^1.9", // v1.21.6
"symfony/framework-bundle": "4.3.*", // v4.3.2
"symfony/messenger": "4.3.*", // v4.3.4
"symfony/property-access": "4.3.*", // v4.3.2
"symfony/property-info": "4.3.*", // v4.3.2
"symfony/serializer": "4.3.*", // v4.3.2
"symfony/validator": "4.3.*", // v4.3.2
"symfony/webpack-encore-bundle": "^1.5", // v1.6.2
"symfony/yaml": "4.3.*" // v4.3.2
},
"require-dev": {
"easycorp/easy-log-handler": "^1.0.7", // v1.0.7
"symfony/debug-bundle": "4.3.*", // v4.3.2
"symfony/maker-bundle": "^1.0", // v1.12.0
"symfony/monolog-bundle": "^3.0", // v3.4.0
"symfony/stopwatch": "4.3.*", // v4.3.2
"symfony/twig-bundle": "4.3.*", // v4.3.2
"symfony/var-dumper": "4.3.*", // v4.3.2
"symfony/web-profiler-bundle": "4.3.*" // v4.3.2
}
}
5 Comments
Hi,
I understand the diff between Command and Event ... I have a question, which is, for you, the best way to get result from the bus, for example, in the controller ? Let You have to register a user, and to return in the json response, the Entity Just created. How do you get the result in the controller from the bus?
I think, while having constructor argument "$filename" in command DeletePhotoFile is a great idea, having the same argument in the "ImagePostDeletedEvent" is not conceptually OK. From the name of it, the argument should represent an ImagePost entity (whether its ID or a whole entity altogether, as discussed in Chapters 7 and 8). So, then the event handler could retrieve necessary information, including the file path.
Hey Volodymyr T.!
Hmm, indeed - I agree! I was trying to pass a "little information as possible" in the message classes (which is good! Don't pass extra stuff!). But you're 100% correct that the name doesn't fit. If I'm truly only going to pass the
$filenametoImagePostDeletedEvent, then probably it should have a different name. Or I should pass the id (as you suggested) even if I don't need it at the moment. Nice catch.Cheers!
I'm dispatching an event to sync and async transports at the same time, how do I tell specific handlers to only process events from specific transports? I have a NewOrderEvent that then needs to be logged (sync), set a review reminder (sync), email alerts (async), sms alerts (async), combine offer pdf docs into a single pdf (async), create thumbnails from pdf pages (async).
Hey Al Bunch
Wow, that's a lot to do! Thank god Messenger is so awesome :)
I think the answer to your problem is in this video: https://symfonycasts.com/sc...
If it doesn't please let us know and we will help you out
Cheers!
"Houston: no signs of life"
Start the conversation!