-
class
Atk4\Ui\
Tabs
¶
Tabs¶
Tabs implement a yet another way to organize your data. The implementation is based on: https://fomantic-ui.com/elements/icon.html.
Demo: https://ui.agiletoolkit.org/demos/tabs.php
Basic Usage¶
Once you create Tabs container you can then mix and match static and dynamic tabs:
$tabs = Tabs::addTo($app);
Adding a static content is pretty simple:
LoremIpsum::addTo($tabs->addTab('Static Tab'));
You can add multiple elements into a single tab, like any other view.
-
Atk4\Ui\Tabs::
addTab
($name, $action = null)¶
Use addTab() method to add more tabs in Tabs view. First parameter is a title of the tab.
Tabs can be static or dynamic. Dynamic tabs use VirtualPage
implementation mentioned above.
You should pass Closure action as a second parameter.
Example:
$tabs = Tabs::addTo($layout);
// add static tab
HelloWorld::addTo($tabs->addTab('Static Tab'));
// add dynamic tab
$tabs->addTab('Dynamically Loading', function (VirtualPage $vp) {
LoremIpsum::addTo($vp);
});
Dynamic Tabs¶
Dynamic tabs are based around implementation of VirtualPage
and allow you
to pass a callback which will be triggered when user clicks on the tab.
Note that tab contents are refreshed including any values you put on the form:
$tabs = Tabs::addTo($app);
// dynamic tab
$tabs->addTab('Dynamic Lorem Ipsum', function (VirtualPage $vp) {
LoremIpsum::addTo($vp, ['size' => 2]);
});
// dynamic tab
$tabs->addTab('Dynamic Form', function (VirtualPage $vp) {
$m_register = new \Atk4\Data\Model(new \Atk4\Data\Persistence\Array_($a));
$m_register->addField('name', ['caption' => 'Please enter your name (John)']);
$form = Form::addTo($vp, ['class.segment' => true]);
$form->setModel($m_register);
$form->onSubmit(function (Form $form) {
if ($form->model->get('name') !== 'John') {
return $form->jsError('name', 'Your name is not John! It is "' . $form->model->get('name') . '". It should be John. Pleeease!');
}
});
});