Form input bindings
Text
You can use model="$myValue"
directive to create two-way data binding on form inputs. For example:
class EventHandling extends BaseComponent
{
 public string $name = '';
}
<input model="$name" placeholder="Enter your name" />
<div>Your name is: $name</div>
The result:
Your name is:
Multiline Text
For textarea
everything is the same. For example:
class EventHandling extends BaseComponent
{
 public string $message = '';
}
<textarea model="$message" placeholder="Enter your message"></textarea>
<div>Your message is:</div>
<p style="white-space: pre-line;">$message</p>
The result:
Your message is:
Please note: interpolation <textarea>$message</textarea>
will not work.
Checkbox
Same here, use two-way data binding directive for checkbox
type. For example:
class EventHandling extends BaseComponent
{
 public bool $checked = false;
}
<label>
 <input type="checkbox" model="$checked" /> Visible
</label>
<div if="$checked">I am visible!</div>
The result:
Multiple checkboxes with array value binding:
class EventHandling extends BaseComponent
{
 public array $checkedNames = [];

 function getNames()
 {
 return json_encode($this->checkedNames);
 }
}
<input type="checkbox" id="jack" value="Jack" model="$checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" model="$checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" model="$checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {getNames()}</span>
The result:
Checked names: []
Radio
Same here, use two-way data binding directive for radio type. For example:
class EventHandling extends BaseComponent
{
 public string $picked = '';
}
<input type="radio" id="one" value="One" model="$picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" model="$picked">
<label for="two">Two</label>
<br>
<span>Picked: $picked</span>
The result:
Picked:
Select
Same as well:
class EventHandling extends BaseComponent
{
 public string $selected = '';
}
<select model="$selected">
 <option disabled value="">Please select one</option>
 <option>A</option>
 <option>B</option>
 <option>C</option>
</select>
<span>Selected: $selected</span>
The result:
Selected:
Multiple select and array binding
class EventHandling extends BaseComponent
{
 public array $selectedList = [];
}
<select model="$selectedList" multiple>
 <option>A</option>
 <option>B</option>
 <option>C</option>
</select>
<br>
<span>Selected: {json_encode($selectedList)}</span>
The result:
Selected: []