Вход Регистрация
Файл: library/XenForo/View.php
Строк: 155
<?php

/**
* Abstract base for views. A child of this class is not required if you simply
* want to render an HTML template with no other processing.
*
* Views must implement renderX methods, where X represents the response type they
* handle (eg, renderHtml or renderJson). These methods take no arguments and should
* return a string if they successfully rendered content or false if the content
* is really unrepresentable.
*
* @package XenForo_Mvc
*/
abstract class XenForo_View
{
    
/**
    * View renderer that created this view
    *
    * @var XenForo_ViewRenderer_Abstract
    */
    
protected $_renderer;

    
/**
    * Response object. Should be used to modify headers/state as necessary
    *
    * @var Zend_Controller_Response_Http
    */
    
protected $_response;

    
/**
    * The template that should be used to output. This can be used as is, as a basis,
    * or just ignored entirely. Each view will handle it differently.
    *
    * @var string
    */
    
protected $_templateName;

    
/**
    * Key-value parameters that can be used by the view.
    *
    * @var array
    */
    
protected $_params = array();

    
/**
    * Constructor
    *
    * @param XenForo_ViewRenderer_Abstract    View renderer
    * @param Zend_Controller_Response_Http Response object
    * @param array                         View params
    * @param string                        Template name to render (possibly ignored)
    */
    
public function __construct(XenForo_ViewRenderer_Abstract $rendererZend_Controller_Response_Http $response, array $params = array(), $templateName '')
    {
        
$this->_renderer $renderer;
        
$this->_response $response;
        
$this->_templateName $templateName;

        if (
$params)
        {
            
$this->setParams($params);
        }
    }

    
/**
    * Add an array of params to the view. Overwrites parameters with the same name.
    *
    * @param array
    */
    
public function setParams(array $params)
    {
        
$this->_params array_merge($this->_params$params);
    }

    
/**
     * Gets the view params.
     *
     * @return array
     */
    
public function getParams()
    {
        return 
$this->_params;
    }

    
/**
     * Gets the view template name
     *
     * @return string
     */
    
public function getTemplateName()
    {
        return 
$this->_templateName;
    }

    
/**
     * This is a global param preparation method. It is called for all view output
     * types. It is also called even if the required renderX method is not available.
     *
     * This method can be overridden to modify params and then let the code fallback to
     * the behavior as if the view did not exist (by not defining the renderX method).
     */
    
public function prepareParams()
    {
    }

    
/**
    * Creates an HTML template object for rendering using the view renderer.
    *
    * @param string Name of the template to create
    * @param array  Key-value parameters to pass to the template
    *
    * @return XenForo_Template_Abstract
    */
    
public function createTemplateObject($templateName, array $params = array())
    {
        return 
$this->_renderer->createTemplateObject($templateName$params);
    }

    
/**
     * Creates the HTML template object to render this view's own specified template,
     * using the given params.
     *
     * @return XenForo_Template_Abstract
     */
    
public function createOwnTemplateObject()
    {
        return 
$this->createTemplateObject($this->_templateName$this->_params);
    }

    
/**
     * Tells the browser that the data should be downloaded (rather than displayed)
     * using the specified file name.
     *
     * @param string $fileName
     * @param boolean $inline True if the attachment should be shown inline - use with caution!
     */
    
public function setDownloadFileName($fileName$inline false)
    {
        
$type = ($inline 'inline' 'attachment');

        
$this->_response->setHeader('Content-Disposition',
            
$type '; filename="' str_replace('"'''$fileName) . '"',
            
true
        
);
    }

    
/**
     * Pre-loads the specified template.
     *
     * @param string $template
     */
    
public function preLoadTemplate($template)
    {
        
$this->_renderer->preloadTemplate($template);
    }
}
Онлайн: 1
Реклама