Chapters
31 Chapters
|
3:19:40
|
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!
08.
Embedded Images
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 on Symfony 4.3, but will work well with Symfony 4.4 or 5.
What PHP libraries does this tutorial use?
// composer.json
{
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"aws/aws-sdk-php": "^3.87", // 3.110.11
"composer/package-versions-deprecated": "^1.11", // 1.11.99
"doctrine/annotations": "^1.0", // 1.10.1
"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.7.2
"knplabs/knp-markdown-bundle": "^1.7", // 1.7.1
"knplabs/knp-paginator-bundle": "^2.7", // v2.8.0
"knplabs/knp-snappy-bundle": "^1.6", // v1.6.0
"knplabs/knp-time-bundle": "^1.8", // v1.9.1
"league/flysystem-aws-s3-v3": "^1.0", // 1.0.23
"league/flysystem-cached-adapter": "^1.0", // 1.0.9
"league/html-to-markdown": "^4.8", // 4.8.2
"liip/imagine-bundle": "^2.1", // 2.1.0
"nexylan/slack-bundle": "^2.1,<2.2.0", // v2.1.0
"oneup/flysystem-bundle": "^3.0", // 3.1.0
"php-http/guzzle6-adapter": "^1.1", // v1.1.1
"phpdocumentor/reflection-docblock": "^3.0|^4.0", // 4.3.1
"sensio/framework-extra-bundle": "^5.1", // v5.4.1
"stof/doctrine-extensions-bundle": "^1.3", // v1.3.0
"symfony/asset": "^4.0", // v4.3.4
"symfony/console": "^4.0", // v4.3.4
"symfony/flex": "^1.9", // v1.21.6
"symfony/form": "^4.0", // v4.3.4
"symfony/framework-bundle": "^4.0", // v4.3.4
"symfony/mailer": "4.3.*", // v4.3.4
"symfony/messenger": "4.3.*", // v4.3.4
"symfony/property-access": "4.3.*", // v4.3.4
"symfony/property-info": "4.3.*", // v4.3.4
"symfony/security-bundle": "^4.0", // v4.3.4
"symfony/sendgrid-mailer": "4.3.*", // v4.3.4
"symfony/serializer": "4.3.*", // v4.3.4
"symfony/twig-bundle": "^4.0", // v4.3.4
"symfony/validator": "^4.0", // v4.3.4
"symfony/web-server-bundle": "^4.0", // v4.3.4
"symfony/webpack-encore-bundle": "^1.4", // v1.6.2
"symfony/yaml": "^4.0", // v4.3.4
"twig/cssinliner-extra": "^2.12", // v2.12.0
"twig/extensions": "^1.5", // v1.5.4
"twig/extra-bundle": "^2.12|^3.0", // v2.12.1
"twig/inky-extra": "^2.12", // v2.12.0
"twig/twig": "^2.12|^3.0" // v2.13.1
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.0", // 3.2.2
"easycorp/easy-log-handler": "^1.0.2", // v1.0.7
"fzaninotto/faker": "^1.7", // v1.8.0
"symfony/browser-kit": "4.3.*", // v4.3.5
"symfony/debug-bundle": "^3.3|^4.0", // v4.3.4
"symfony/dotenv": "^4.0", // v4.3.4
"symfony/maker-bundle": "^1.0", // v1.13.0
"symfony/monolog-bundle": "^3.0", // v3.4.0
"symfony/phpunit-bridge": "^3.3|^4.0", // v4.3.4
"symfony/stopwatch": "4.3.*", // v4.3.4
"symfony/var-dumper": "^3.3|^4.0", // v4.3.4
"symfony/web-profiler-bundle": "4.3.*" // v4.3.4
}
}
12 Comments
Hi.
I had to put this path:
'public/build/assets/images': images
According to Symfony, (me too), "(project_dir)/assets" doesn't exist.
Hey AbelardoLG,
Don't you have assets/ directory in the root of your project? I suppose you didn't download the code and work in your own project, right? In this screencast we set path to the source images, but you set it to the built images, i.e. Encore build directory "public/build/". I think you need to point to dir where your source images are located. I mean, the images come to public/build/assets/images/ somewhere from another "source" directory that you should link to instead. Because Encore build dir should be in .gitignore
Cheers!
Hi there,
I am build this app on my pace.
My assets directory is included into public dir which is under the root.
I am going to investigate why it happens. :) Brs.
Hey Abelardo,
Yeah, just point it to your assets directory in public/ folder, but not to the public/build/ directory yet. :) We will point to build directory later, but for now we want to point to the image source directory.
Cheers!
Hi Victor, posting this message here as you raised this point. I have to admit that I have just done a few chapters here and there to learn a few specific things about Mailer - I might have missed out where this is done. However, checking the code in the /finish directory, should the twig.yaml file not have the path to the build directory? Or did I miss out something?
Hey Martin,
It depends on what you need. If you only want to have an ability to load only images from the Twig templates - you will be enough to point only to your image folder in the public/ dir. Actually, it depends on if you handle all your images via Webpack Encore or no. If you do - then yeah, you would need to point to the build/ directory, but once again you may want to point to a specific image directory in that build/ folder. In this course project we just didn't handle images that we're using in emails via Webpack Encore, that's why our images are in "assets/images" and not in "build/", that's it, but it may be different for your custom project, depends on how you do things in it.
I hope this helps!
Cheers!
What about if you have a separate front-end application, for instance a Vue SPA using Symfony as an API. Would it be better to embed images or have some path to the front-end app hardcoded in the Twig file?
Hey Evelyn P.
If the API is returning the image file paths, then, it should return them as absolute URLs. But, if you're talking about the images loaded by your frontend app (let's say, in order to load its own design) then having a base path stored somewhere makes sense (in a Twig file, or in the frontend app itself)
Cheers!
For a11y please don't use "logo" word inside alternative text of logo image. It's not that useful for screen readers users.
Hey Tomasz,
Thank you for your feedback! Agree, it's not that useful at all, though probably makes sense to change it to "SymfonyCasts Logo"? Or just "SymfonyCasts"? Or are you about to do not use alt text at all? Because, IMO using some alt text would be good for SEO.
Cheers!
The truth is that img[alt] is not meant for SEO. It's meant for a11y technologies like screen readers and for text browsers (like for people who are in process of installing Arch Linux :) ). If your image is decorative (like borders, separators) it should container empty alt="". Don't skip alt at all — in that case screen reader can read filename. If your image contains logo or some banner with text, alt should container exactly that text. For example Foo company logo with "Foo" word and some icons should have just alt="Foo" attribute. The most complex case is with photos and charts — here you have to describe the whole image. Sometimes it might be good idea to just link to another page with text representation, instead.
Thanks again for the advice on this TomaszGasior :)
"Houston: no signs of life"
Start the conversation!