PHP Classes

File: src/App/View/TemplateView.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   src/App/View/TemplateView.php   Download  
File: src/App/View/TemplateView.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Jaxon
Call PHP classes from JavaScript using AJAX
Author: By
Last change:
Date: 4 months ago
Size: 1,997 bytes
 

Contents

Class file image Download
<?php

/**
 * TemplateView.php
 *
 * A view wrapper for the template library provided by the jaxon-utils package.
 *
 * @package jaxon-core
 * @author Thierry Feuzeu <thierry.feuzeu@gmail.com>
 * @copyright 2022 Thierry Feuzeu <thierry.feuzeu@gmail.com>
 * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License
 * @link https://github.com/jaxon-php/jaxon-core
 */

namespace Jaxon\App\View;

use
Jaxon\Utils\Template\TemplateEngine;

class
TemplateView implements ViewInterface
{
   
/**
     * The Jaxon template engine
     *
     * @var TemplateEngine
     */
   
protected $xTemplateEngine;

   
/**
     * The class constructor
     */
   
public function __construct(TemplateEngine $xTemplateEngine)
    {
       
$this->xTemplateEngine = $xTemplateEngine;
    }

   
/**
     * Add a namespace to this view renderer
     *
     * @param string $sNamespace The namespace name
     * @param string $sDirectory The namespace directory
     * @param string $sExtension The extension to append to template names
     *
     * @return void
     */
   
public function addNamespace(string $sNamespace, string $sDirectory, string $sExtension = ''): void
   
{
       
$this->xTemplateEngine->addNamespace($sNamespace, $sDirectory, $sExtension);
    }

   
/**
     * Render a view
     *
     * @param Store $store A store populated with the view data
     *
     * @return string The string representation of the view
     */
   
public function render(Store $store): string
   
{
       
$sViewName = $store->getViewName();
       
$sNamespace = $store->getNamespace();
       
// In this view renderer, the namespace must always be prepended to the view name.
       
if(substr($sViewName, 0, strlen($sNamespace) + 2) != $sNamespace . '::')
        {
           
$sViewName = $sNamespace . '::' . $sViewName;
        }
       
// Render the template
       
return trim($this->xTemplateEngine->render($sViewName, $store->getViewData()), " \t\n");
    }
}