Chapters
40 Chapters
|
4:39:58
|
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!
06.
Centralizing Upload Logic
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!
This tutorial is built on Symfony 4 but works great in Symfony 5!
What PHP libraries does this tutorial use?
// composer.json
{
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"aws/aws-sdk-php": "^3.87", // 3.87.10
"composer/package-versions-deprecated": "^1.11", // 1.11.99
"doctrine/annotations": "^1.0", // 1.10.1
"doctrine/doctrine-bundle": "^1.6.10", // 1.10.2
"doctrine/doctrine-migrations-bundle": "^1.3|^2.0", // v2.0.0
"doctrine/orm": "^2.5.11", // v2.7.2
"knplabs/knp-markdown-bundle": "^1.7", // 1.7.1
"knplabs/knp-paginator-bundle": "^2.7", // v2.8.0
"knplabs/knp-time-bundle": "^1.8", // 1.9.0
"league/flysystem-aws-s3-v3": "^1.0", // 1.0.22
"league/flysystem-cached-adapter": "^1.0", // 1.0.9
"liip/imagine-bundle": "^2.1", // 2.1.0
"nexylan/slack-bundle": "^2.0,<2.2.0", // v2.1.0
"oneup/flysystem-bundle": "^3.0", // 3.0.3
"php-http/guzzle6-adapter": "^1.1", // v1.1.1
"phpdocumentor/reflection-docblock": "^3.0|^4.0", // 4.3.0
"sensio/framework-extra-bundle": "^5.1", // v5.2.4
"stof/doctrine-extensions-bundle": "^1.3", // v1.3.0
"symfony/asset": "^4.0", // v4.2.3
"symfony/console": "^4.0", // v4.2.3
"symfony/flex": "^1.9", // v1.21.6
"symfony/form": "^4.0", // v4.2.3
"symfony/framework-bundle": "^4.0", // v4.2.3
"symfony/property-access": "4.2.*", // v4.2.3
"symfony/property-info": "4.2.*", // v4.2.3
"symfony/security-bundle": "^4.0", // v4.2.3
"symfony/serializer": "4.2.*", // v4.2.3
"symfony/twig-bundle": "^4.0", // v4.2.3
"symfony/validator": "^4.0", // v4.2.3
"symfony/web-server-bundle": "^4.0", // v4.2.3
"symfony/yaml": "^4.0", // v4.2.3
"twig/extensions": "^1.5" // v1.5.4
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.0", // 3.1.0
"easycorp/easy-log-handler": "^1.0.2", // v1.0.7
"fzaninotto/faker": "^1.7", // v1.8.0
"symfony/debug-bundle": "^3.3|^4.0", // v4.2.3
"symfony/dotenv": "^4.0", // v4.2.3
"symfony/maker-bundle": "^1.0", // v1.11.3
"symfony/monolog-bundle": "^3.0", // v3.3.1
"symfony/phpunit-bridge": "^3.3|^4.0", // v4.2.3
"symfony/stopwatch": "4.2.*", // v4.2.3
"symfony/var-dumper": "^3.3|^4.0", // v4.2.3
"symfony/web-profiler-bundle": "4.2.*" // v4.2.3
}
}
16 Comments
Hello,
I want to upload 3Mb xml file using Microservice. What I do wrong ? Got Error Serialization of 'Symfony\Component\HttpFoundation\File\UploadedFile' is not allowed
`
public function microBankTransactionImportIso20022(Request $request):RedirectResponse
{
$bankTransactionIso20022File = $request->files->get('bank-transaction-iso20022-file');
if ( $bankTransactionIso20022File instanceof UploadedFile)
{
Hi there,
Great tutorials, thanks.
Please can you explain me why in controllers we can just use $this->getParameter('kernel.project_dir') and why in a service, we need to use depedency injection ? I mean why fundamentally ?
Hey Simon L.
You can do things like
$this->getParameter('kernel.project_dir')in a controller because a controller has access to the Symfony Container. The new standard is to rely on the container as less as possible, that's why we always prefer to inject services, this give us clarity of the dependencies of our services. Also, is possible that you want to instantiate a service with different configuration, i.e. different arguments, so, having said that I recommend you to inject services/parameters as much as possibleCheers!
Thanks Diego :)
Hello,
The only problem I have so far is (every time I hit the Update! Button) that it clears the Content field of the form.
Hey WilcoS
Do you got any errors? The whole form gets emptied or only the file field?
No errors at all.
I've downloaded the course and set it up.
When you edit a form by the /admin/article/{id}/edit section and you hit update then the content of the field 'Content' will be erased.
Interesting... Can you confirm if other fields are saving after submit? Also, double check that you're passing the $article object as second argument to your form
$form = $this->createForm(ArticleFormType::class, $article);. When you do that the form autocompletes with the object you passed in.Btw. when you submit, the controller redirects you back to the same page so you can see the applied changes.
Great tutorial. Only one small detail, a method that has side effects should not return a value, so better to create two functions: getFileName(UploadFile $file) : string, upload(UploadFile $file, string $fileName) : void. But this is probably not important for the explanation of the file upload logic.
Hey Stefan D.!
I think that's a very fair critique :). It's a bit more convenient to "smash" it all into one, but if you like having 2 better, I agree! And of course, having 2 is more flexible (and I would definitely do it that way if this were a reusable lib).
Cheers!
I get this problem:
Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
Don't know why, ps: I'm using windows
Hey Giacomo,
Hm, that's interesting... But do you have "fileinfo" PHP extension as it says? You can check it with:
$ php -m | grep fileinfo
Probably mime type guessers require this extension for correct work. Please, install it first and try again.
Cheers!
Hi,
We are still waiting for the continuation of the course
Hey Nizar
This course is about to be completely released, there are a bunch of episodes after this one, I believe you already know that, so could you be a bit more explicit about what you mean with "continuation of the course".
Cheers!
Hello,
It remains the last 5 lessons. usually you added the lessons every Wednesday and it's been more than a week that I'm waiting for these lessons
Am I clear or do you want more details yet?
Hey Ali!
Yes, we're still releasing it! And, actually, I see we release it *every day* not only on Wednesday - you can check it here: https://symfonycasts.com/up... . So, to recap - only 4 videos are left here, so this course will be completely released on the next week!
Thank you for your patience!
P.S. on the course overview page: https://symfonycasts.com/sc... - you can subscribe and we'll inform you by email (only 1 email) as soon as this is completely released. I hope this helps!
Cheers!
"Houston: no signs of life"
Start the conversation!