2012-12-18 3 views
1

J'ai trouvé que les variables de vue en Phalcon pourraient être échappées par Phalcon \ escaper: http://docs.phalconphp.com/en/latest/api/Phalcon_Escaper.htmlComment échapper html dans Phalcon Mvc Voir

Par exemple, dans Zend, il y a un moyen d'appeler aides de vue de la vue:

// view context 
$this->escape($data); // calls View\Helper\Escape 
$this->url($params); // calls url view helper 
// etc 

Y a-t-il un moyen d'obtenir de telles vues sans créer de nouvel objet à chaque fois? Mon idée actuelle est de faire une classe BaseView, étendue de Phalcon \ Mvc \ View et d'y définir des méthodes souvent utilisées, qui utiliseront des objets en cache .. mais je ne suis pas sûr que ce soit la meilleure:

class BaseView extends Phalcon\Mvc\View 
{ 
    // cached helper objects 
    $helpers = []; 

    // view helper call 
    public function url($params) 
    { 
     if (!$this->helpers['url']) { 
      $this->helpers['url'] = new Phalcon\Mvc\Url(); 
     } 
     return $this->helpers['url']->get($params); 
    } 
} 

Répondre

4

vous pouvez accéder aux services dans le conteneur de services (DI) en utilisant cette $ en vue:

<?php 
    echo $this->escaper->escape('<h1>Hello</h1>'); //Access Phalcon\Escaper 
?> 

<?php 
    echo $this->url->get('posts/index'); //Access Phalcon\Mvc\Url 
?> 

Il suffit d'utiliser le nom qui a été enregistré dans les services container.If vous utilisez Phalcon \ DI \ FactoryDefault, voici une liste des services enregistrés par défaut: http://docs.phalconphp.com/en/latest/reference/di.html#service-name-conventions