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

毎回新しいオブジェクトを作成せずに、そのようなビューヘルパーを取得する方法はありますか?私の現在のアイデアは、Phalcon \ Mvc \ Viewから拡張されたBaseViewクラスを作成し、キャッシュされたオブジェクトを使用する、よく使用されるメソッドを定義することです。しかし、それが最善の方法かどうかはわかりません。

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 #service-name-conventions

于 2012-12-18T05:39:02.647 に答える