1. Go to this page and download the library: Download joomla/renderer library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
joomla / renderer example snippets
namespace Joomla\Controller;
use Joomla\Renderer\RendererInterface;
use Joomla\Controller\AbstractController;
use Joomla\DI\ContainerAwareInterface;
use Joomla\DI\ContainerAwareTrait;
use Joomla\View\ViewInterface;
/**
* Default controller class for the application
*
* @since 1.0
*/
class DefaultController extends AbstractController implements ContainerAwareInterface
{
use ContainerAwareTrait;
/**
* The default view for the application
*
* @var string
* @since 1.0
*/
protected $defaultView = 'dashboard';
/**
* State object to inject into the model
*
* @var \Joomla\Registry\Registry
* @since 1.0
*/
protected $modelState = null;
/**
* Execute the controller
*
* This is a generic method to execute and render a view and is not suitable for tasks
*
* @return boolean True if controller finished execution
*
* @since 1.0
* @throws \RuntimeException
*/
public function execute()
{
try
{
// Initialize the view object
$view = $this->initializeView();
// Render our view.
$this->getApplication()->setBody($view->render());
return true;
}
catch (\Exception $e)
{
throw new \RuntimeException(sprintf('Error: ' . $e->getMessage()), $e->getCode());
}
}
/**
* Method to initialize the model object
*
* @return \Joomla\Model\ModelInterface
*
* @since 1.0
* @throws \RuntimeException
*/
protected function initializeModel()
{
$model = '\\Joomla\\Model\\' . ucfirst($this->getInput()->getWord('view')) . 'Model';
// If a model doesn't exist for our view, revert to the default model
if (!class_exists($model))
{
$model = '\\Joomla\\Model\\DefaultModel';
// If there still isn't a class, panic.
if (!class_exists($model))
{
throw new \RuntimeException(sprintf('No model found for view %s', $vName), 500);
}
}
return new $model($this->modelState);
}
/**
* Method to initialize the renderer object
*
* @return RendererInterface Renderer object
*
* @since 1.0
* @throws \RuntimeException
*/
protected function initializeRenderer()
{
$type = $this->getContainer()->get('config')->get('template.renderer');
// Set the class name for the renderer's service provider
$class = '\\Joomla\\Service\\' . ucfirst($type) . 'RendererProvider';
// Sanity check
if (!class_exists($class))
{
throw new \RuntimeException(sprintf('Renderer provider for renderer type %s not found.', ucfirst($type)));
}
// Add the provider to the DI container
$this->getContainer()->registerServiceProvider(new $class);
return $this->getContainer()->get('renderer');
}
/**
* Method to initialize the view object
*
* @return ViewInterface View object
*
* @since 1.0
* @throws \RuntimeException
*/
protected function initializeView()
{
// Initialize the model object
$model = $this->initializeModel();
$view = ucfirst($this->getInput()->getWord('view', $this->defaultView));
$class = '\\Joomla\\View\\' . $view . 'HtmlView';
// Ensure the class exists, fall back to default otherwise
if (!class_exists($class))
{
$class = '\\Joomla\\View\\DefaultHtmlView';
// If we still have nothing, abort mission
if (!class_exists($class))
{
throw new \RuntimeException(sprintf('A view class was not found for the %s view.', $view));
}
}
// HTML views
namespace Joomla\View;
use Joomla\Renderer\RendererInterface;
use Joomla\Model\ModelInterface;
use Joomla\View\AbstractView;
/**
* Abstract HTML View class
*
* @since 1.0
*/
abstract class AbstractHtmlView extends AbstractView
{
/**
* The data array to pass to the renderer engine
*
* @var array
* @since 1.0
*/
private $data = array();
/**
* The name of the layout to render
*
* @var string
* @since 1.0
*/
private $layout;
/**
* The renderer object
*
* @var RendererInterface
* @since 1.0
*/
private $renderer;
/**
* Class constructor
*
* @param ModelInterface $model The model object.
* @param RendererInterface $renderer The renderer object.
*
* @since 1.0
*/
public function __construct(ModelInterface $model, RendererInterface $renderer)
{
parent::__construct($model);
$this->setRenderer($renderer);
}
/**
* Retrieves the data array
*
* @return array
*
* @since 1.0
*/
public function getData()
{
return $this->data;
}
/**
* Retrieves the layout name
*
* @return string
*
* @since 1.0
* @throws \RuntimeException
*/
public function getLayout()
{
if (is_null($this->layout))
{
throw new \RuntimeException('The layout name is not set.');
}
return $this->layout;
}
/**
* Retrieves the renderer object
*
* @return RendererInterface
*
* @since 1.0
*/
public function getRenderer()
{
return $this->renderer;
}
/**
* Method to render the view.
*
* @return string The rendered view.
*
* @since 1.0
* @throws \RuntimeException
*/
public function render()
{
return $this->getRenderer()->render($this->getLayout(), $this->getData());
}
/**
* Sets the data array
*
* @param array $data The data array.
*
* @return $this Method allows chaining
*
* @since 1.0
*/
public function setData(array $data)
{
$this->data = $data;
return $this;
}
/**
* Sets the layout name
*
* @param string $layout The layout name.
*
* @return $this Method allows chaining
*
* @since 1.0
*/
public function setLayout($layout)
{
$this->layout = $layout;
return $this;
}
/**
* Sets the renderer object
*
* @param RendererInterface $renderer The renderer object.
*
* @return $this Method allows chaining
*
* @since 1.0
*/
public function setRenderer(RendererInterface $renderer)
{
$this->renderer = $renderer;
return $this;
}
}
namespace Joomla\View;
use Joomla\Model\DefaultModel;
/**
* HTML view class for the Dashboard
*
* @since 1.0
*/
class DashboardHtmlView extends AbstractHtmlView
{
/**
* Redeclared model object for proper typehinting
*
* @var DefaultModel
* @since 1.0
*/
protected $model;
/**
* Method to render the view.
*
* @return string The rendered view.
*
* @since 1.0
*/
public function render()
{
$this->setData(['data' => $this->model->getData()]);
return parent::render();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.