What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Hello Is it possible to load a widget with a dynamic attribute name? For example ```{% widget data.w

U011K6DASBW
U011K6DASBW Posts: 37 πŸ§‘πŸ»β€πŸš€ - Cadet

Hello
Is it possible to load a widget with a dynamic attribute name? For example

{% widget data.widgetName args data.widgetParams only %}{% endwidget %}

Comments

  • U011K6DASBW
    U011K6DASBW Posts: 37 πŸ§‘πŸ»β€πŸš€ - Cadet

    It seems like WidgetTagTwigTokenParse::parseWidgetTagHead() does not like an attribute being used as widget name. It throws an exception if the widget name is an expression and not a string. However, if I remove that exception throwing code then it works ok.
    Is that condition intentional? and is there any other way to achieve this?

  • U01AM1YGRC2
    U01AM1YGRC2 Posts: 71 πŸ§‘πŸ»β€πŸš€ - Cadet

    Hello @U011K6DASBW I’m not sure but you can check if the widget exists before ->

    {% if widgetExists('data.YOUR_WIDGET_NAME') %}
        <div>
            {{ widget('data.YOUR_WIDGET_NAME', param1, param2) }}
        </div>
    {% endif %}
    
  • U011K6DASBW
    U011K6DASBW Posts: 37 πŸ§‘πŸ»β€πŸš€ - Cadet

    yes I can put the validation widgetExists, but the question is really if I can use an attribute as widget name? and by attribute I mean it should really be evaluated, not passed as string 'data.widgetName'

  • U011K6DASBW
    U011K6DASBW Posts: 37 πŸ§‘πŸ»β€πŸš€ - Cadet

    also, isn’t using widget function like {{ widget() }} deprecated?

  • U01AM1YGRC2
    U01AM1YGRC2 Posts: 71 πŸ§‘πŸ»β€πŸš€ - Cadet

    docs said no, and in other modules is it already used: https://documentation.spryker.com/docs/t-widgets-widget-plugins

  • U011K6DASBW
    U011K6DASBW Posts: 37 πŸ§‘πŸ»β€πŸš€ - Cadet

    ok, I will stick with {% widget data.widgetName args data.widgetParams only %}{% endwidget %} pattern, and will override the WidgetTagTwigTokenParse::parseWidgetTagHead() method to allow using an attribute as widget name, just wanted to make sure that it won’t break anything else, thanks!

  • U01AM1YGRC2
    U01AM1YGRC2 Posts: 71 πŸ§‘πŸ»β€πŸš€ - Cadet
    edited October 2020

    and will override theΒ WidgetTagTwigTokenParse::parseWidgetTagHead()Β  method to allow using an attribute as widget name,

    maybe you make this a change request, if your solution is secured πŸ€·β€β™‚οΈ enough