For the complete documentation index, see llms.txt. This page is also available as Markdown.

4. OutputId()

This function has multiple use cases and is essential for ensuring that the widget functions correctly. We previously used this function to create a unique identifier value for the id HTML attribute. Another important role of this function is to generate identifiers for HTML input fields, enabling two-way binding with writable data field properties of the widget. In other words, it facilitates sending data back.

Let's create a very simple form item to see it in action:

  • Create a new widget and name it "Simple Form Example."

  • Create two new data model text properties called "FirstName" and "LastName."

  • Make both properties writable and required.

  • Use the script below:

<? 
	register input @FirstName 
	register input @LastName
?>
<label>
	First name:
	<input type="text" name="<?attr OutputId(@FirstName) ?>" value="<?attr @FirstName ?>">
</label>
<label>
	Last name:
	<input type="text" name="<?attr OutputId(@LastName) ?>" value="<?attr @LastName ?>">
</label>

For those familiar with sending form data over the internet, there is nothing new here. Just like in regular HTML forms, we use the <input> element to edit and submit the data. One interesting aspect is the use of OutputId(@PropertyName) in the name attribute. We cannot simply use name="PropertyName" here, as that would lead to name collisions if there are multiple instances of this widget on the same page. In other words, OutputId(@PropertyName) ensures that we get a unique name for this property specific to each widget instance.

Next, we will write a more exciting widget: a note widget that you can drag around the screen. This will explain many concepts, especially those related to creating WEM widgets.

Last updated

Was this helpful?