Framework Documentation - View Package

Overview

The View package provides an abstraction layer for rendering content in MVC oriented applications.

Out-of-the-box, the package supports generating responses in the following formats:

  • HTML
  • JSON

Adding data to views

View classes which extend Joomla\View\AbstractView have an API for adding and removing data from views, useful for callers (typically controllers) to push data into the view layer to be rendered.

Adding a single value

The Joomla\View\AbstractView::addData() method allows adding a single key/value pair to the view's data store, and will overwrite a value if the key already exists.

use Joomla\View\JsonView;

$view = new JsonView;
$view->addData('foo', 'bar');

Resetting the data store

The Joomla\View\AbstractView::clearData() method allows resetting the data store by removing all data from the view.

use Joomla\View\JsonView;

$view = new JsonView;
$view->clearData();

Retrieving the data store

The Joomla\View\AbstractView::getData() method allows retrieving the data store from the view.

use Joomla\View\JsonView;

$view = new JsonView;
$view->getData();

Removing a single value

The Joomla\View\AbstractView::removeData() method allows removing a single key from the view's data store.

use Joomla\View\JsonView;

$view = new JsonView;
$view->removeData('foo');

Merging data

The Joomla\View\AbstractView::setData() method allows merging an array of data to the view's data store, and will overwrite a value if the key already exists.

use Joomla\View\JsonView;

$view = new JsonView;
$view->setData(['foo' => 'bar']);

Generating a HTML view

HTML views can be generated by creating a Joomla\View\HtmlView instance and calling its render() method.

The Joomla\View\HtmlView class requires a Joomla\Renderer\RendererInterface object to render the view using your chosen templating engine.

The below example uses Twig as the renderer.

use Joomla\Renderer\TwigRenderer;
use Joomla\View\HtmlView;
use Twig\Environment;

$twig = new Environment;

$renderer = new TwigRenderer($twig);

$view = new HtmlView($renderer);
$view->setData(['foo' => 'bar']);

$rendered = $view->render();

Changing the layout

The layout for a HTML view can be changed by calling Joomla\View\HtmlView::setLayout().

use Joomla\View\HtmlView;

$view = new HtmlView($renderer);
$view->setLayout('my_template');

var_dump($view->getLayout()); // prints string(11) "my_template"

Changing the renderer

The renderer for a HTML view can be changed by calling Joomla\View\HtmlView::setRenderer().

use Joomla\View\HtmlView;

$view = new HtmlView($renderer);
$view->setRenderer($newRenderer);

Generating a JSON view

JSON views can be generated by creating a Joomla\View\JsonView instance and calling its render() method. The view will JSON encode all data in the view's data store.

use Joomla\View\JsonView;

$view = new JsonView;
$view->setData(['foo' => 'bar']);

$rendered = $view->render();
#