The Problem:
Use a custom field to let users set where the job can be applied for.
Using ACPT provide a multi-select field, then manipulate the string output with an echo:function()to match the design output: - (easy 20min implementation)

Since ACPT does not have a :raw and does not provide an array I would need to Regex my way to cleaning the list of values into a plain string… no big deal.
So I create a neat little function html_list_to_string($html, $separator, $trim).
which I use in my echo:html_list_to_string(‘{acpt-job_details_job-location}’, ‘ / ’, true).
Boom! Done… but no, why is bricks showing my actual function call on the front end?
I read the docs:
- Of course, I need to whitelist my functions
- Of course I need to wrap my nested arguments in single quotes
But still I cannot get the echo to render my function output, it keep showing the entire echo string.
After spending half a day driving up my blood pressure and questioning my life choices a I came across this post where Mr @Matej states the echo tag does not support double quotations (““), which is also conveniently highlighted academy for dynamic data - which is very detailed in some aspects but in others could be improved for a less experienced crowd eg. myself…
I ran document.querySelector(‘.brxe-text’).innerHTML in my browser console to investigate the contents of the output and behold an empty class tag in the html output that contains the devil himself -the double quotes- class=””.
The Solution
Okay so we have an issue because we somehow need to pass the contents that contain the double quotes to our function, but we can’t do it through the echo tag…
Thanks to the help of my colleague (Super Grok) I discover this little gem of a function: bricks_render_dynamic_data. Which will allow us to do just that. But I hate the idea of having to build a wrapper function just to access each individual multi-select.
So we build a generic parser function that will allow us to pass any value to a function and it’s arguments through the echo tag
- We will prefix any arguments that need to be rendered from tags with
tag: - We will pass any other arguments normally
/**
* General-purpose wrapper to call a function with mixed literal and dynamic tag arguments.
* Dynamically renders any args prefixed with 'tag:' as Bricks dynamic data.
*
* Usage in Bricks: {echo:parse_to_func('join_html_lists', 'tag:acpt_job_job-details_location:value', ' / ', true)}
* - First arg: the target function name as string (must be in echo_function_names)
* - Remaining args: literals (e.g., ' / ') or dynamic tags prefixed with 'tag:' (e.g., 'tag:post_title')
* - 'tag:' args are rendered via bricks_render_dynamic_data and passed as their resolved values
* - Non-'tag:' args are passed literally
* - Supports any number of mixed args; order is preserved
*/
function parse_to_func(string $func_name, ...$args): string
{
// Process args: render dynamic tags if prefixed
$processed_args = array_map(function($arg) {
if (is_string($arg) && str_starts_with($arg, 'tag:')) {
$tag = substr($arg, 4); // Remove 'tag:' prefix
return bricks_render_dynamic_data('{' . $tag . '}');
}
return $arg; // Literal arg
}, $args);
// Call the target function with processed args
return call_user_func_array($func_name, $processed_args);
}
This allows us to pass a compliant value through the echo tag that will be parsed into the function with php and return the result of your intended function, you can use the prefix tag: to render the value or just use a plain input value:
echo:parse_to_func(‘intended_function_name’, 'tag:acpt_job-locations:value', 'other-arg')
In my case:
{echo:parse_to_func('join_html_lists','tag:acpt_job_job-details_location:value', ' / ')}
-Note: I still had to use the :value suffix to get the actual html passed to my function.
Result:

Alas, I am no younger but I hope this can be useful to someone out there, and preserve some youth.