3

ViewModelに特定のテンプレートを設定する方法を知っています。しかし、ViewModelでテンプレートを設定する前に、現在のテンプレートパススタックに別のテンプレートが実際に存在するかどうかを確認するにはどうすればよいですか?単一のアクションを再利用して、クエリパラメーターに基づいてビューをレンダリングできるという考えです。最初に確認したいので、ビューが存在しない場合は、一般的なサーバーエラーメッセージではなく、応答ステータスコードを404に設定できます。

4

3 に答える 3

17

コントローラーからやりたいと仮定すると、次のことができます

    $template = 'non/existant/template';
    $resolver = $this->getEvent()
        ->getApplication()
        ->getServiceManager()
        ->get('Zend\View\Resolver\TemplatePathStack');

    if (false === $resolver->resolve($template)) {

        // does not exist
    }
于 2012-09-01T11:23:06.493 に答える
7

ビューが別のビューから存在することを確認したい場合 (おそらくパーシャルをロードしている場合)、使用できます

<?php if ($this->resolver('layouts/default')) : ?>
    <?php $this->render('layouts/default'); ?>
<?php endif; ?>

ビューが ZF2 に存在することをテストする

于 2012-09-06T20:18:45.310 に答える