Table of Contents
As mentioned in the previous chapter, you typically won't need to define
the run()
method yourself. The default implementation
will use the next value in the requested path.
It will look for a method in the driver called
.
some
Action()
For example, if the request URL is /__/weather/get/Adelaide
, the first URL
part after the driver name is get
. This would result in a function
called getAction()
being called.
The remaining path is passed to this method (that is Adelaide
).
If the request URL is simply /__/weather
, the default action that is
request is indexAction()
.
If a given method isn't found then an exception is thrown from run()
,
resulting in a 404 file not found response.
To continue with the weather example, the following listing demonstrates how to define
an action. Let's assume that the request URL for this would /__/weather/get
and that it expects a posted value called city
Example 4.1. Defining a backend request action (driver.php
)
<?php class Driver_backend_requests_weather_controller extends Module_Backend_Driver_Abstract { public function getDependentModules() { return array('weather'); } public function indexAction($path) { $request = $this->getPost(); $city = $request->getPost('city'); // now make use of $city } } ?>
You can have as many actions as you like, each of which can accept different values and return any type of data. We'll look at how to properly respond to a request shortly.
public function preDispatch($action)
public function postDispatch($action)
The preDispatch()
method is called immediately before an action handler is called,
while postDispatch()
is called immediately after an action handler is called.
The name of the action is passed as the only argument to these methods.
For example, if the requested URL is /__/weather/get
, then the following calls occur:
$this->preDispatch('get');
$this->getAction($path);
$this->postDispatch('get');
These methods allow you to easily define functionality that is common to all action handlers.