6.0.0-beta13
4/13/26

[[toc]]

  • Horde_Controller

Documentation on using Horde_Controller

++ General Info

++ Horde_Controllers in Horde Core Apps

Horde Controllers are independent from the Horde Ajax Framework. Controllers need Horde_Routes and need rewrite rules.

Ajax application controllers do not live in {{lib/}} but in {{$app/app/controllers/}}

Example:

Class {{Nag_CompleteTask_Controller}} in {{nag/app/controllers/!CompleteTask.php}}

getRequestVars(); if (isset($requestVars['task']) && isset($requestVars['tasklist'])) { $nag_task = new Nag_CompleteTask(); $result = $nag_task->result($requestVars['task'], $requestVars['tasklist']); } else { $result = array('error' => 'missing parameters'); } $requestVars = $request->getGetVars(); if (!empty($requestVars['format']) && $requestVars['format'] == 'json') { $response->setContentType('application/json'); $response->setBody(json_encode($result)); } elseif ($requestVars['url']) { $response->setRedirectUrl($requestVars['url']); } } } ?>

A Horde Controller based app needs a {{config/routes.php}} file.

For example

connect('/t/complete', array( 'controller' => 'CompleteTask', )); ?>

defines a route for a call like www.example.com/nag/t/complete to be handled by the !CompleteTask controller seen above.

The endpoint script is horde/rampage.php - rampage.php currently seems to handle only authenticated calls.

The controller is passed the request (in this case, a json request) and handles it (with a json answer in this case)