Open seb-jean opened 1 month ago
I think this is more something related to https://github.com/symfony/ux
This has never been possible as i see it .. I believe expression language is used there to compose topic names based on the enttity props.
Or am i missing something ?
Yes but I saw in the documentation below that it was possible to use the service
function in expression languages: https://symfony.com/doc/current/service_container/expression_language.html
... in the service container:)
Yes, but the ExpressionLanguage
used in the service container's configuration is configured to access the Symfony Container (or at least something to fetch services from), which was never the case here with Symfony\UX\Turbo\Attribute\Broadcast
attribute.
Maybe you can achieve what you want by tweaking the Symfony Container by using some Compiler Pass, or maybe you can go for an easier solution by moving your logic into a (static?) method in your entity.
So, won't fix?
Maybe we can find another alternative, instead of passing the whole container, we can inject a service that could be configured under broadcard.topic_generator
(or smth like that)?
So, won't fix?
Maybe let's use another word than fix ... as this is a request for a feature (that has never existed in the first place, right ? π )
Could you give you the final usage you're looking after, so maybe we can suggest other ways to achieve it ?
Maybe we can find another alternative, instead of passing the whole container, we can inject a service that could be configured under
broadcard.topic_generator
(or smth like that)?
Yes, why not :).
Maybe let's use another word than fix ... as this is a request for a feature (that has never existed in the first place, right ? π )
Yes, it's true, you're right, sorry π.
Could you give you the final usage you're looking after, so maybe we can suggest other ways to achieve it ?
Currently, when I put:
<div id="book_{{ book.id }}" {{ turbo_stream_listen('book_detail_' ~ book.id) }}></div>
it becomes:
<div id="book_7" data-controller="symfony--ux-turbo--mercure-turbo-stream" data-symfony--ux-turbo--mercure-turbo-stream-topic-value="book_detail_7" data-symfony--ux-turbo--mercure-turbo-stream-hub-value="http://127.0.0.1:56215/.well-known/mercure"></div>
But with a generator, this will hash/encode the data-symfony--ux-turbo--mercure-turbo-stream-topic-value
. It will then be more secure.
This line
<div id="book_{{ book.id }}" {{ turbo_stream_listen(('book_detail_' ~ book.id)|mercure_topic) }}></div>
will then become:
<div id="book_7" data-controller="symfony--ux-turbo--mercure-turbo-stream" data-symfony--ux-turbo--mercure-turbo-stream-topic-value="AiLvziwlkB5M9UpYKRyiHvDs/BK7t4T6B7CR48ropyA=" data-symfony--ux-turbo--mercure-turbo-stream-hub-value="http://127.0.0.1:56215/.well-known/mercure"></div>
I like the idea, should it be something to add here or in the Mercure bundle ?
You might as well do it directly in MercureBundle. But is there a downside?
Symfony version(s) affected
7.0.7
Description
I have an error :
How to reproduce
I have the following entity:
But when I create a Book entity, I get the following error:
In my case,
$this->functions
isenum
andconstant
: https://github.com/symfony/symfony/blob/7.1/src/Symfony/Component/ExpressionLanguage/Parser.php#L242Possible Solution
No response
Additional Context
No response