Yaf_Dispatcher::setView

(Yaf >=1.0.0)

Yaf_Dispatcher::setViewSet a custom view engine

Beschreibung

public Yaf_Dispatcher::setView(Yaf_View_Interface $view): Yaf_Dispatcher

This method provides a solution if you want use a custom view engine instead of Yaf_View_Simple

Parameter-Liste

view

A Yaf_View_Interface instance

Rückgabewerte

Beispiele

Beispiel #1 A custom View engine() example

<?php
require "/path/to/smarty/Smarty.class.php";

class 
Smarty_Adapter implements Yaf_View_Interface
{
    
/**
     * Smarty object
     * @var Smarty
     */
    
public $_smarty;
 
    
/**
     * Constructor
     *
     * @param string $tmplPath
     * @param array $extraParams
     * @return void
     */
    
public function __construct($tmplPath null$extraParams = array()) {
        
$this->_smarty = new Smarty;
 
        if (
null !== $tmplPath) {
            
$this->setScriptPath($tmplPath);
        }
 
        foreach (
$extraParams as $key => $value) {
            
$this->_smarty->$key $value;
        }
    }
 
    
/**
     * Set the path to the templates
     *
     * @param string $path The directory to set as the path.
     * @return void
     */
    
public function setScriptPath($path)
    {
        if (
is_readable($path)) {
            
$this->_smarty->template_dir $path;
            return;
        }
 
        throw new 
Exception('Invalid path provided');
    }
 
    
/**
     * Assign a variable to the template
     *
     * @param string $key The variable name.
     * @param mixed $val The variable value.
     * @return void
     */
    
public function __set($key$val)
    {
        
$this->_smarty->assign($key$val);
    }
 
    
/**
     * Allows testing with empty() and isset() to work
     *
     * @param string $key
     * @return boolean
     */
    
public function __isset($key)
    {
        return (
null !== $this->_smarty->get_template_vars($key));
    }
 
    
/**
     * Allows unset() on object properties to work
     *
     * @param string $key
     * @return void
     */
    
public function __unset($key)
    {
        
$this->_smarty->clear_assign($key);
    }
 
    
/**
     * Assign variables to the template
     *
     * Allows setting a specific key to the specified value, OR passing
     * an array of key => value pairs to set en masse.
     *
     * @see __set()
     * @param string|array $spec The assignment strategy to use (key or
     * array of key => value pairs)
     * @param mixed $value (Optional) If assigning a named variable,
     * use this as the value.
     * @return void
     */
    
public function assign($spec$value null) {
        if (
is_array($spec)) {
            
$this->_smarty->assign($spec);
            return;
        }
 
        
$this->_smarty->assign($spec$value);
    }
 
    
/**
     * Clear all assigned variables
     *
     * Clears all variables assigned to Yaf_View either via
     * {@link assign()} or property overloading
     * ({@link __get()}/{@link __set()}).
     *
     * @return void
     */
    
public function clearVars() {
        
$this->_smarty->clear_all_assign();
    }
 
    
/**
     * Processes a template and returns the output.
     *
     * @param string $name The template to process.
     * @return string The output.
     */
    
public function render($name$value NULL) {
        return 
$this->_smarty->fetch($name);
    }

    public function 
display($name$value NULL) {
        echo 
$this->_smarty->fetch($name);
    }

}
?>

Beispiel #2 Yaf_Dispatcher::setView() example

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract {

    
/**
     * there are some config for smarty in the config:
     *
     * smarty.left_delimiter   = "{{"
     * smarty.right_delimiter  = "}}"
     * smarty.template_dir     = APPLICATION_PATH "/views/scripts/"
     * smarty.compile_dir      = APPLICATION_PATH "/views/templates_c/"
     * smarty.cache_dir        = APPLICATION_PATH "/views/templates_d/"
     *
     */
    
public function _initConfig() {
        
$config Yaf_Application::app()->getConfig();
        
Yaf_Registry::set("config"$config);
    }

    public function 
_initLocalName() {
        
/** we put class Smarty_Adapter under the local library directory */
        
Yaf_Loader::getInstance()->registerLocalNamespace('Smarty');
    }

    public function 
_initSmarty(Yaf_Dispatcher $dispatcher) {
        
$smarty = new Smarty_Adapter(nullYaf_Registry::get("config")->get("smarty"));
        
$dispatcher->setView($smarty);
        
/* now the Smarty view engine become the default view engine of Yaf */
    
}
}
?>

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Notizen-App: was ist eure - ich komm immer wieder auf Keep zurück...

Hallo liebe Community, guten Abend, Notizen-App: was ist eure - ich komm immer wieder auf Keep zurück... was ist eure beste NoteTaking App!? i ...

Geschrieben von dhubs am 22.12.2024 23:05:11
Forum: Off-Topic Diskussionen
How to overcome Safari's iframe cookie block?

To overcome Safari's iframe cookie block, you can use the SameSite=None; Secure cookie attribute in conjunction with a third-party domain that sup ...

Geschrieben von Joniemartinez am 21.12.2024 13:28:24
Forum: HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
Probleme mit speichern in Datenbank in französisch

Les erreurs fréquentes lors de l'enregistrement de données dans une base de données incluent des problèmes de connexion, des erreurs de syntax ...

Geschrieben von Alice12 am 18.12.2024 05:07:21
Forum: PHP Developer Forum
Gibt es eine API zum Abrufen von PHP-Code-Referenzen?

PHP.net bietet eine umfassende Online-Dokumentation für PHP. Es gibt keine offizielle API zum Abrufen von PHP-Dokumentationen direkt, aber du kan ...

Geschrieben von Alice12 am 18.12.2024 05:03:27
Forum: PHP Developer Forum