PHP - ZF2 - 文字列変数からテンプレートをレンダリングする

ペトル・クリメシュ

テンプレートが変数の文字列にある ZF2 でのテンプレートのレンダリングに問題があります。簡単な例があります:

$template = "<div>easy</div>";
$view = new \Zend\View\Model\ViewModel();
$view->setTemplate($template);   

$renderer = new \Zend\View\Renderer\PhpRenderer();
$html = $renderer->render($view);

このコードはレンダリングに失敗し、レンダラーはテンプレートがファイルへのパスであると見なします。そして、iam reallz は、その文字列をレンダリングに伝える方法がわかりません。

あなたの時間をThxして、応答してください。

ブルーヒピ

$template 内の文字列を実際のテンプレートとして使用するようにPhpRendererクラスを拡張しrenderメソッドをオーバーライドする必要があります。

class MyPhpRenderer extends PhpRenderer {
public function render($nameOrModel, $values = null)
{
    if ($nameOrModel instanceof Model) {
        $model       = $nameOrModel;
        $nameOrModel = $model->getTemplate();
        if (empty($nameOrModel)) {
            throw new Exception\DomainException(sprintf(
                '%s: received View Model argument, but template is empty',
                __METHOD__
            ));
        }
        $options = $model->getOptions();
        foreach ($options as $setting => $value) {
            $method = 'set' . $setting;
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
            unset($method, $setting, $value);
        }
        unset($options);

        // Give view model awareness via ViewModel helper
        $helper = $this->plugin('view_model');
        $helper->setCurrent($model);

        $values = $model->getVariables();
        unset($model);
    }

    // find the script file name using the parent private method
    $this->addTemplate($nameOrModel);
    unset($nameOrModel); // remove $name from local scope

    $this->__varsCache[] = $this->vars();

    if (null !== $values) {
        $this->setVars($values);
    }
    unset($values);

    // extract all assigned vars (pre-escaped), but not 'this'.
    // assigns to a double-underscored variable, to prevent naming collisions
    $__vars = $this->vars()->getArrayCopy();
    if (array_key_exists('this', $__vars)) {
        unset($__vars['this']);
    }
    extract($__vars);
    unset($__vars); // remove $__vars from local scope

    while ($this->__template = array_pop($this->__templates)) {
        $this->__file = $this->resolver($this->__template);
        try {
            if (!$this->__file) {
               $this->__content = $this->__template; // this line does what you need
            }else{
              ob_start();
              $includeReturn = include $this->__file;
              $this->__content = ob_get_clean();
            }
        } catch (\Exception $ex) {
            ob_end_clean();
            throw $ex;
        }
        if ($includeReturn === false && empty($this->__content)) {
            throw new Exception\UnexpectedValueException(sprintf(
                '%s: Unable to render template "%s"; file include failed',
                __METHOD__,
                $this->__file
            ));
        }
    }

    $this->setVars(array_pop($this->__varsCache));

    if ($this->__filterChain instanceof FilterChain) {
        return $this->__filterChain->filter($this->__content); // filter output
    }

    return $this->__content;
}
}

そして、あなたcodeは次のようになるはずです:

$template = "<div>easy</div>";
$view = new \Zend\View\Model\ViewModel();
$view->setTemplate($template);   

$renderer = new MyPhpRenderer();
$html = $renderer->render($view);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHP5とPHP7を使用したZF2

分類Dev

PHP zf2 mail return null

分類Dev

ZF2フレームワークを使用してphpスクリプトにオプションを渡す

分類Dev

PHP WSDL(Zf2)で成功が返されないのはなぜですか

分類Dev

Module.php内でZF2スローエラーとリダイレクト

分類Dev

ZF2動的ルーティング

分類Dev

zf2 AbstractRestfullControllerAPIルーティング

分類Dev

ZF2コードをmodule.config.phpからmodule.phpに移動します

分類Dev

PHP ZF2で名前空間のないPHPライブラリをロードする方法は?

分類Dev

ZF2例外ハンドラーはPHPの解析エラーを抑制します

分類Dev

zf2のすべてのモジュールのmodule.config.phpの異なる設定

分類Dev

Composerを介したZF2のインストールが間違ったPHPバージョンを取得する

分類Dev

zfcuserを使用したZF2

分類Dev

ZF2のコントローラーオブジェクトを使用せずにmodule.phpのコントローラープラグインにアクセスするにはどうすればよいですか?

分類Dev

ZF2でデフォルトのレンダリング戦略をJSONに変更するにはどうすればよいですか?

分類Dev

Webアプリケーション(ZF2)をPHARに変換する

分類Dev

文字列でレンダリングするPythonJinja2テンプレート

分類Dev

ZF2は、テンプレートをレンダリングするときにコントローラー名を切り捨てたいのですが、なぜですか?

分類Dev

一致するフィールドセットを使用してZF2コレクションをカスタムレンダリングする方法

分類Dev

ZF2 pdfModelによってレンダリングされたPDFを保存する方法は?

分類Dev

ZF2でレイアウトとビューレンダラーを無効にする方法は?

分類Dev

ZF2でレイアウトとビューレンダラーを無効にする方法は?

分類Dev

ZF2:ナビゲーションメニューでのHTMLタグのレンダリング(HTMLエスケープをオフにする)

分類Dev

PHPCloudでZF2アプリをデバッグする

分類Dev

zf2コントローラーでリンクURLを作成する

分類Dev

コントローラ内のzf2で$ _SERVER変数を取得します

分類Dev

index.phpがZF2のすべてのリクエストでどのようにそしてなぜ実行されているのですか?

分類Dev

zf2ドクトリン2-出力OnetoOne単方向

分類Dev

ZF2 / PHP-クエリからスカラーレコードを抽出し、2番目のクエリのWhere句のパラメータとして使用する方法は?

Related 関連記事

  1. 1

    PHP5とPHP7を使用したZF2

  2. 2

    PHP zf2 mail return null

  3. 3

    ZF2フレームワークを使用してphpスクリプトにオプションを渡す

  4. 4

    PHP WSDL(Zf2)で成功が返されないのはなぜですか

  5. 5

    Module.php内でZF2スローエラーとリダイレクト

  6. 6

    ZF2動的ルーティング

  7. 7

    zf2 AbstractRestfullControllerAPIルーティング

  8. 8

    ZF2コードをmodule.config.phpからmodule.phpに移動します

  9. 9

    PHP ZF2で名前空間のないPHPライブラリをロードする方法は?

  10. 10

    ZF2例外ハンドラーはPHPの解析エラーを抑制します

  11. 11

    zf2のすべてのモジュールのmodule.config.phpの異なる設定

  12. 12

    Composerを介したZF2のインストールが間違ったPHPバージョンを取得する

  13. 13

    zfcuserを使用したZF2

  14. 14

    ZF2のコントローラーオブジェクトを使用せずにmodule.phpのコントローラープラグインにアクセスするにはどうすればよいですか?

  15. 15

    ZF2でデフォルトのレンダリング戦略をJSONに変更するにはどうすればよいですか?

  16. 16

    Webアプリケーション(ZF2)をPHARに変換する

  17. 17

    文字列でレンダリングするPythonJinja2テンプレート

  18. 18

    ZF2は、テンプレートをレンダリングするときにコントローラー名を切り捨てたいのですが、なぜですか?

  19. 19

    一致するフィールドセットを使用してZF2コレクションをカスタムレンダリングする方法

  20. 20

    ZF2 pdfModelによってレンダリングされたPDFを保存する方法は?

  21. 21

    ZF2でレイアウトとビューレンダラーを無効にする方法は?

  22. 22

    ZF2でレイアウトとビューレンダラーを無効にする方法は?

  23. 23

    ZF2:ナビゲーションメニューでのHTMLタグのレンダリング(HTMLエスケープをオフにする)

  24. 24

    PHPCloudでZF2アプリをデバッグする

  25. 25

    zf2コントローラーでリンクURLを作成する

  26. 26

    コントローラ内のzf2で$ _SERVER変数を取得します

  27. 27

    index.phpがZF2のすべてのリクエストでどのようにそしてなぜ実行されているのですか?

  28. 28

    zf2ドクトリン2-出力OnetoOne単方向

  29. 29

    ZF2 / PHP-クエリからスカラーレコードを抽出し、2番目のクエリのWhere句のパラメータとして使用する方法は?

ホットタグ

アーカイブ