Parent class: waController
.
See explanation of HTTP request routing in backend and in frontend.
Class waViewAction
is intended for generating an HTML string, which can be either returned to browser in response to an HTTP request or used for any other purpose. Controllers based on waViewAction
class are called (PHP) actions.
Main PHP action logic must be described in public method execute()
.
HTML templates
Each PHP class based on waViewAction
(except for cases when method setTemplate is used), must have an HTML template file located in templates/actions/
. HTML template files must be grouped by module ID; e.g., templates/actions/backend/
, templates/actions/settings/
.
An HTML template file must be named by rule [Module_id][Action_id].html
e.g., Backend.html
(template for action default
of module backend
), BackendPage.html
, SettingsSection.html
.
How to use
There are several methods to use PHP actions as shown below.
Method 1. Sending an HTML string in repose to an HTTP request
To make an action class process certain HTTP requests, it must have corresponding action_id
and module_id
and, in case of frontend requests, routing must be set up as described in the article about request routing.
To obtain the HTTP request contents in PHP action class, use methods of waRequest
class; e.g.:
$page_id = waRequest::post('id', null, waRequest::TYPE_INT);
To pass values to action's HTML template, use instance of template engine class (Smarty 3 is used by default), which is accessible via action class field $view
e.g., :
$this->view->assign('customer', $customer_data);
No additional efforts are required for sending the resulting HTML string back to user, it is done automatically.
Method 2. Returning an HTML string
An action class can be used simply for generating an HTML string, without its mandatory sending back to use. This how it can be achieved:
- Create an instance of action class. Pass an array of additional parameters to its constructor, if needed.
- Call action's method
display()
to get the generated HTML string.
The obtained HTML string can be used at your discretion.
Example
$page_action = new myappPageAction( array( 'id' => $page_id ) ); $page_html = $page_action->display();
The shorthand for the above example would be as follows, with the use of wao
function:
$page_html = wao(new myappPageAction( array( 'id' => $page_id ) ))->display();
Methods
-
display
Returns HTML string generated by action class.
-
getLayout
Returns layout class instance (
waLayout
) currently used by action class. -
getTemplate
Returns path to HTML template file currently used by action class.
-
getTheme
Returns instance of
waTheme
class containing information about frontend design theme. -
getThemeUrl
Returns URL of frontend design theme files directory.
-
setLayout
Sets current layout (
waLayout
). -
setTemplate
Sets path to alternative HTML template file.
-
setThemeTemplate
Sets HTML template file for a frontend action class.
public function display ($clear_assign = true)
Returns HTML string generated by action class.
Parameters
-
$clear_assign
Flag requiring to unset all variables, passed to HTML template, upon execution of this method.
Example
$page_action = new myappPageAction( array( 'id' => $page_id ) ); $page_html = $page_action->display();
public function getLayout ()
Returns layout class instance (waLayout
) currently used by action class.
Example
$layout = $this->getLayout();
protected function getTemplate ()
Returns path to HTML template file currently used by action class.
Example
$current_template = $this->getTemplate();
public function getTheme ()
Returns instance of waTheme
class containing information about frontend design theme.
Example
$theme = $this->getTheme();
protected function getThemeUrl ()
Returns URL of frontend design theme files directory.
Example
$theme_dir_url = $this->getThemeUrl();
public function setLayout (waLayout $layout = null)
Sets current layout (waLayout
).
Parameters
-
$layout
Instance of
waLayout
class, which must be used to generate the layout of the action page.
Example
$this->setLayout(new myappBackendLayout());
public function setTemplate ($template)
Sets path to alternative HTML template file. When this method is called, an action can have no HTML template file as described above.
Parameters
-
$template
Path to template file, which can be specified in the following ways:
- absolute path to file,
- name of HTML file without extension; this case assumes that a name of an existing HTML template file of the same app or plugin is specified, which must match the naming rules described above.
Examples
//for an app $this->setTemplate('BackendOrder'); $this->setTemplate(wa()->getAppPath('templates/actions/backend/BackendOrder'), 'myapp');
//for a plugin $this->setTemplate('BackendOrder'); $this->setTemplate(wa()->getAppPath('plugins/myplugin/templates/actions/backend/BackendOrder'), 'myapp');
protected function setThemeTemplate ($template)
Sets HTML template file for a frontend action class.
Parameters
-
$template
Name of a design theme HTML template file.
Example
$this->setThemeTemplate('page.html');