1

我发现 phalcon 中的视图变量可以被 Phalcon\Escaper 转义:http ://docs.phalconphp.com/en/latest/api/Phalcon_Escaper.html

例如,在 Zend 中,有一种方法可以从视图中调用视图助手:

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

有没有办法在不每次都创建新对象的情况下获得这样的视图助手?我目前的想法是制作一些 BaseView 类,从 Phalcon\Mvc\View 扩展并在那里定义一些常用的方法,这些方法将使用缓存的对象..但我不确定这是最好的方法:

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);
    }
}
4

1 回答 1

4

您可以在视图中使用 $this 访问服务容器 (DI) 中的服务:

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

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

只需使用在服务容器中注册的名称。如果您使用的是 Phalcon\DI\FactoryDe​​fault,以下是默认注册服务的列表:http: //docs.phalconphp.com/en/latest/reference/di.html #服务名称约定

于 2012-12-18T05:39:02.647 回答