In Agile Toolkit controllers are generic. They resemble “helpers” or “libraries” in other frameworks. Like any other object, you need to “add” your controller. Most controllers are designed to enhance the functionality of the object, where you add them.
Some controllers would have Controller_ in their class name, others are used without prefix. Controllers introduce diversity and their impact may be very different. For instance Controller_Compat will set Agile Toolkit into compatibility mode with previous version, while Order will simply allow you to reorder items in array.
Although not very significant, Ordering Controller is a good demonstration of controller use in Agile Toolkit.
Allows to re-order child elements.
$this->add('Text')->set('World! '); $o2 = $this->add('Text')->set('Hello, '); // Would output - "World! Hello, " $this->add('Order')->move($o2, 'first')->now(); // Now order is fixed. - "Hello, World!"
Method move has various formats:
$o = $form->add('Order'); $o->move('field', 'first'); // will be first $o->move('field', 'last'); // will be first $o->move('field', 'before', 'otherfield'); // will be first $o->move('field', 'after', 'otherfield'); // will be first $o->move('field', 'middle'); // puts in the middle $o->move('field', 'middleof', 'Form_Field'); // will be first
Form in Agile contains many different child objects - model, controller, helpers etc. When you want your field to be positioned in the middle of other fields, you would not care for those invisible objects.
The middleof setting will instruct Order controller to place your field in the middle relative to Form_Field class objects.
Will re-order items right away.
Will re-order item before render. (Application beforeRender hook)
By default, object will operate on it’s owner’s AbstractObject::$elements. You can specify a different array to use here.