0

Is it possible to prefill Input/hidden fields on the standard magnolia form (page with Form component created in Magnolia Author UI) from url parameters or it could/should be done only in FreeMarker template?

AlexeiP
  • 581
  • 1
  • 10
  • 26

2 Answers2

2

We did this in magnolia 5.7 by overriding the hiddenField like this:

<!-- set the value to the queryparam (ctx[..]) or the form field value if not empty -->
[#assign value = content.value!ctx[content.controlName]!model.value!""]

<div ${model.style!} >
    <input type="hidden" name="${content.controlName}" id="${content.controlName}" value="${value}"/>
</div><!-- end ${model.style!} -->

<!-- remove the queryParam and value from URL without redirect/reload so that it isn't sent twice with the form -->
<script>
    var newUrl = RemoveParameterFromUrl(window.location.href, "${content.controlName}")
    window.history.pushState("", "", newUrl);

    // credits to Jared for this regex https://stackoverflow.com/a/25214672/15591150
    function RemoveParameterFromUrl(url, parameter) {
        return url
            .replace(new RegExp('[?&]' + parameter + '=[^&#]*(#.*)?$'), '$1')
            .replace(new RegExp('([?&])' + parameter + '=[^&]*&'), '$1');
    }
</script>
btk
  • 71
  • 5
0

There isn't an out-of-the-box feature. As you told you could customize the components in order to retrieve the value inside Freemarker template (e.g. ${ctx.keyParamName} ).

G. Scimeca
  • 36
  • 2