- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-18-2023 01:11 AM - edited 07-25-2023 12:45 PM
Hi,
I need help with getting the "parent" data/values (aka Form data controller) from within a page collection.
So this is for a shared "tab" between experiences that needs to get the data from the parent it's coming from.
Already tried: data.gform.nowRecordformBlob.table / sys_id, but this only seems to work within viewports and not within page collections.
Also tried adding URL parameters (after) I created it in the sys_ux_app_route, which crashed the page funny enough.
Does anybody have an idea on this?
@Brad Tilton You mentioned already you knew a solution for this 🙂
Thanks in advance!
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-25-2023 12:43 PM - edited 07-26-2023 07:33 AM
Alright managed to find it, not sure why it didn't work before.
Let me also make a short tutorial for it for other people!
Step 1
Make sure you are using the latest "record" default template.
You can tell by going to the Data Sources and check the form controller:
Old ID is called "gform", new ID is called "record"
Old:
New:
If you still have the old one, add a new page variant and select it from template (select the latest one).
*I know both standard record and CSM default record has the new controller
Step 2
Create your page collection
Goto your newly created record page, select the "Tab sidebar"
+ Add a new tab
Select "Add a page collection", and click "Next"
And click "Create collection"
This will send you to the backend specifically "sys_ux_extension_point" table.
Click "New"
Name: Up to you
Component: Tabs
App shell: UXR Base Experience Shell (Default)
Controller: Form
Go ahead and just click "Submit"
*Just leave the page open we will change the icon in a later state.
Step 3
Go back to the UI Builder, "Refresh list"
And go ahead select your create Page collection and press "Continue"
Step 4
Let's add a tab page to actually show up within the tab.
Click on your "Page collection", and select the button "Edit Content"
This will now open a new UI Builder Tab.
Within the "Page collection" add a new page. "Create new Page"
The name is also used for the "Tab" name itself.
Step 5
Access the form controller data
Within the Data resources you will now see the "Inherited data resource instances" > Form
It's called "controller", for my example I've simply just used a "stylized text" to show the parent sys_id.
Simply just call them by @Data.controller.sysId and @Data.controller.table
On the page collection the "Test values" are the parent values given as an example in the controller.
Click "Save"
Step 6
Add an icon to the tab!
First go back to the tab you left open, or open the sys_ux_extension_point table.
Click your page collection open, now in the bottom you have a related list called "UX App Routes"
There is a column called "Icon", fill in the icon you want for your tab.
These can easily be found by using the "icon" component, and simply doing everything lowercase with "-"
In my case it going to be "ai-sparkle-fill"
AND voilà
Bonus step
Setting up Context props
Usually what I'd like to do is actually setting this up with the @context.props
Goto the Body on your content tree, and select "config" on the configuration pane
Click "Edit"
Click "+ Add" next to properties
Fill in Property name: parentTable (or whatever you like to name it)
Click "Add"
Click once more on "+ Add"
Property name: parentSysId
Click "Add"
Then "Save"
Now within the properties fill in the @Data.controller, for me it didn't auto fill. But you can simply add them.
After this you can now simply call them with @context.props.parentSysId and @context.props.parentTable
Hope this helps anybody that came across this!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 06:00 AM
I did a bit of digging into this last week and it looks like page collections can only access controller data. When you create the page collection you tell it whether it's going to be displayed in tabs and what controller it should have access to. If it's on the standard record page it should have access to the record controller (which is not the gform data resource).
One thing to keep in mind is that this method really only works on the newer standard record page template and not on the older record page template. One way to tell them apart is if the record page has the newer record controller or the older gForm data resource. While we introduced the newer SRP in Tokyo, not all of the OOB workspace teams have uptaken it yet, so you may need to create a new record page variant from the SRP template if you want to use it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-21-2023 12:07 AM - edited 07-21-2023 12:08 AM
I've tried really hard to find out using the Asset Management Workspace. But I still have no clue where it fills up the value. It's filled the context.props.table/sysId from data.table/data.sysId. I changed the extension point to form controller too but with no luck.
Does it use the Screen conditions to fill the data?
Or does it use events to get the data?
I got no clue. My page collection also just vanishes sometimes when I configured something wrong.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-25-2023 12:43 PM - edited 07-26-2023 07:33 AM
Alright managed to find it, not sure why it didn't work before.
Let me also make a short tutorial for it for other people!
Step 1
Make sure you are using the latest "record" default template.
You can tell by going to the Data Sources and check the form controller:
Old ID is called "gform", new ID is called "record"
Old:
New:
If you still have the old one, add a new page variant and select it from template (select the latest one).
*I know both standard record and CSM default record has the new controller
Step 2
Create your page collection
Goto your newly created record page, select the "Tab sidebar"
+ Add a new tab
Select "Add a page collection", and click "Next"
And click "Create collection"
This will send you to the backend specifically "sys_ux_extension_point" table.
Click "New"
Name: Up to you
Component: Tabs
App shell: UXR Base Experience Shell (Default)
Controller: Form
Go ahead and just click "Submit"
*Just leave the page open we will change the icon in a later state.
Step 3
Go back to the UI Builder, "Refresh list"
And go ahead select your create Page collection and press "Continue"
Step 4
Let's add a tab page to actually show up within the tab.
Click on your "Page collection", and select the button "Edit Content"
This will now open a new UI Builder Tab.
Within the "Page collection" add a new page. "Create new Page"
The name is also used for the "Tab" name itself.
Step 5
Access the form controller data
Within the Data resources you will now see the "Inherited data resource instances" > Form
It's called "controller", for my example I've simply just used a "stylized text" to show the parent sys_id.
Simply just call them by @Data.controller.sysId and @Data.controller.table
On the page collection the "Test values" are the parent values given as an example in the controller.
Click "Save"
Step 6
Add an icon to the tab!
First go back to the tab you left open, or open the sys_ux_extension_point table.
Click your page collection open, now in the bottom you have a related list called "UX App Routes"
There is a column called "Icon", fill in the icon you want for your tab.
These can easily be found by using the "icon" component, and simply doing everything lowercase with "-"
In my case it going to be "ai-sparkle-fill"
AND voilà
Bonus step
Setting up Context props
Usually what I'd like to do is actually setting this up with the @context.props
Goto the Body on your content tree, and select "config" on the configuration pane
Click "Edit"
Click "+ Add" next to properties
Fill in Property name: parentTable (or whatever you like to name it)
Click "Add"
Click once more on "+ Add"
Property name: parentSysId
Click "Add"
Then "Save"
Now within the properties fill in the @Data.controller, for me it didn't auto fill. But you can simply add them.
After this you can now simply call them with @context.props.parentSysId and @context.props.parentTable
Hope this helps anybody that came across this!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-05-2023 05:46 PM
Thanks for putting this guide together,@Wybren1!
I'm trying to follow your guide and think I followed the steps as written but it looks like it is still not pulling the data from the the parent controller. Hoping you might have some ideas for troubleshooting.
I can see the read-only inherited data resource in the page collection data tab, but when trying to reference the data like you do in Step 5 with 'Stylize Text', no data is printed when previewing a record in an affected workspace. I also noticed that as I have configured it, I cannot reference the controller data source from the Body, to setup the @context.props as described in your 'bonus steps'. From the Body, it doesn't look like it can see the inherited 'controller' data source.
Any ideas?