User Interface
Interactivity
Business Model
Persistence

PHP is a server-side language. That prompted us to implement server-side UI actions. They are very easy to define - no need to create any routes or custom routines, simply define a PHP closure like this:

$button = \Atk4\Ui\Button::addTo($owner, ['Click for the greeting!']);
$button->on('click', function () {
    return 'Hello World!';
});
Click for the greeting!

A component of Agile Toolkit (callback) enables seamless communication between the frontend components (which are often written in VueJS) and the backend. We also support seamless reloading of any UI widget:

$seg = \Atk4\Ui\View::addTo($owner, ['ui' => 'segment']);

\Atk4\Ui\Text::addTo($seg)->set('Number of buttons: ');

$paginator = \Atk4\Ui\Paginator::addTo($seg, [
    'total' => 5,
    'reload' => $seg,
    'urlTrigger' => 'count',
]);

\Atk4\Ui\View::addTo($seg, ['ui' => 'divider']);

for ($i = 1; $i <= ($_GET['count'] ?? 1); ++$i) {
    \Atk4\Ui\Button::addTo($seg, [$i]);
}
Number of buttons:
1
2
3

This demo also shows you how to create composite views. The '$seg' above contains text, paginator, divider and some buttons. Interestingly, Paginator view also consists of buttons and Agile Toolkit renders everything reliably.