diff --git a/source/development/frontend/controller.rst b/source/development/frontend/controller.rst index 8c04734f..1c012f49 100644 --- a/source/development/frontend/controller.rst +++ b/source/development/frontend/controller.rst @@ -94,7 +94,7 @@ readonly if true, input fields will be readonly ================== =========================================================================================== Name Description ================== =========================================================================================== -header Header row +header Header row text Single line of text password Password field for sensitive input. The contents will not be displayed. textbox Multiline text box @@ -158,3 +158,52 @@ post request to /api/sample/test/echo, using jQuery: and are named :code:`ApiMutableModelControllerBase`, :code:`ApiMutableServiceControllerBase`. Both extend :code:`ApiControllerBase` as described in this chapter. The mutable model controller is explained in more detail in :doc:`using grids <../examples/using_grids>`, the service controller is explained in :doc:`api enable services <../examples/api_enable_services>` + + +-------------------------------------------------- +Searchable recordsets +-------------------------------------------------- + +The tip in the previous chapter described how to use grids when using models, but in some cases there are datasets +without being bound to a model. For example when traversing legacy data or gathering system statistics. + +For this reason we added the method :code:`searchRecordsetBase()` in :code:`ApiControllerBase`. +Using this method offers the ability to hook a recordset into the same search functionality as being available +in model grids. + +The following parameters are being offered: + +================== =========================================================================================== +Name Description +================== =========================================================================================== +$records array as record set, e.g. [ ['id' => '1'], ['id' => '2'], ... ] +$fields Optional list of fields when not all data should be returned +$defaultSort Optional default sort order (fielndname in recordset) +$filter_funct Optional pluggable filter function, which is call with the record in question +$sort_flags Default set to :code:`SORT_NATURAL | SORT_FLAG_CASE` +================== =========================================================================================== + +.. Note:: + + In order to filter sets on fields, make sure all records contain the requested field. Currently it's not possible + to omit fields when being sorted. + + +Implementing this into your own controller should be as simple as: + +.. code-block:: php + + class TestController extends ApiControllerBase + { + /** + * @return array + */ + public function searchAction() + { + $records = []; + $records[] = ['id' => '1', 'description' => 'test 1']; + $records[] = ['id' => '2', 'description' => 'test 2']; + $records[] = ['id' => '3', 'description' => 'test 3']; + return $this->searchRecordsetBase($records); + } + }