$file = 'path/to/file.txt';
$response = new BinaryFileResponse($file);Code language:PHP(php)
But in some cases you might want to create an image dynamically and return it directly from the controller without storing it on the filesystem. So you can create your image with the GD library and directly stream the GDImage object from the symfony controller with the StreamedResponse class.
Are you annoyed of too many deprecation warnings in you logs of your symfony app? Probably yes because it is really a lot of noise. However deprecation logs are still useful to ensure future compatibility of your app.
So since version 5.1 symfony will log deprecations to a dedicated log channel when it exists and ships with this monolog config:
- deprecation # Deprecations are logged in the dedicated "deprecation" channel when it existsCode language:PHP(php)
This is added already in the recipe and ships when installing symfony.
Ok, but the handler for this deprecation channel is not configured, so you have to do this yourself. How? Add this to your monolog config:
There are multiple PHP native ways to convert umlaute and other special characters to ascii save formats, but most of them i experience insufficient in the one or other way.
Since i am using symfony anyway i can use the String component which has a handy slugger which converts any characters into safe ascii characters. It is very flexible and can be customized with locales, custom replacements and closures.
When using bin/console make:entity on Mysql and then later you switch your application to Postgres and you have a table called user, which you most likely have when using security component of Symfony. Then you will receive an error because user is a reserved word in Postgres!
An exception occurred while executing 'INSERT INTO user (id, email, roles, password, is_verified) VALUES (?, ?, ?, ?, ?)' with params [3, "email@example.com", "", "your-encrypted-password", 0]: SQLSTATE: Syntax error: 7 ERROR: syntax error at or near "user" LINE 1: INSERT INTO user (id, email, roles, password, is_verified) V...
You might encounter this deprecation message after your upgrade to symfony 5.1 in your symfony project:
Since symfony/dotenv 5.1: Passing a boolean to the constructor of “Symfony\Component\Dotenv\Dotenv” is deprecated, use “Dotenv::usePutenv()
To fix this, go to config/bootstrap.php and remove the false from the Dotenv constructor: (new Dotenv(false))->loadEnv(dirname(DIR).'/.env'); to (new Dotenv())->loadEnv(dirname(DIR).'/.env'); See: https://github.com/symfony/symfony/issues/37195
Actually the file config/bootstrap.php has been removed from symfony 5.1 and was replaced in public/index.php.
But since the project was updated from an symfony 4 version the bootrap file is still present.
So another option would be to remove the boostrap file and update the project entirely to symfony 5.1 recipe. This is not trivial though as you can see in this corresponfing PullRequest.
Symfony’s deprecation warnings while running tests is a great service to keep track with upcoming changes in newer symfony versions. However these warnings can break your CI/CD pipeline and sometimes you cant fix all deprecation warnings immediatly.
To disable them you can set the ENV var SYMFONY_DEPRECATIONS_HELPER=disabled and the warnings will not be displayed anymore and CI/CD will pass again. Update from comments: SYMFONY_DEPRECATIONS_HELPER=weak does also work and will still show the deprecation warnings count. (Thx Max)
Angular for frontend with symfony delivering the data have become quite a common setup.
When working with this constellation you will sooner or later come across the i18n topic. Most likely you would want to share translations between front- and backend. So that you could keep translations in one single location while using it for frontend templates as well as server-side error messages etc.
I recently started to do all PHP development with docker, since I was just tired of installing tons of dev libraries on my machine. Most of which i couldn’t even remember what they actually were good for.
We use technologies like cookies to store and/or access device information. We do this to improve browsing experience and to show personalized ads. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.