zend-expressive icon indicating copy to clipboard operation
zend-expressive copied to clipboard

default_suffix

Open Auramel opened this issue 5 years ago • 3 comments

Hello! How I can change default_suffix from .phtml on something else? I use zend-view with service-manager.

Auramel avatar Oct 06 '18 19:10 Auramel

There currently isn't a way.

You can make it happen, though. To do so, you will need to create a delegator factory that uses reflection to fetch the NamespacedPathStackResolver attached to the renderer, and then set the suffix on that.

As an example:

use Psr\Container\ContainerInterface;
use ReflectionProperty;
use Zend\Expressive\ZendView\NamespacedPathStackResolver;
use Zend\Expressive\ZendView\ZendViewRenderer;

class TemplatePathSuffixDelegator
{
    public function __invoke(ContainerInterface $container, string $name, callable $callback) : ZendViewRenderer
    {
        $renderer = $callback();
        $r = new ReflectionProperty($renderer, 'resolver');
        $r->setAccessible(true);
        $resolver = $r->getValue($renderer);
        $resolver->setDefaultSuffix('php');
        return $renderer;
    }
}

You would then register this via your dependency configuration:

// In config/autoload/dependencies.global.php:
use Zend\Expressive\ZendView\ZendViewRenderer;

return [
    'dependencies' => [
        'delegators' => [
            ZendViewRenderer::class => [ TemplatePathSuffixDelegator::class ],
        ],
    ],
];

In the meantime, I'm marking this as a feature request, as this is a configuration option we should support.

weierophinney avatar Oct 08 '18 14:10 weierophinney

It working! Thank you very much! I believe, that in future will be more easily way

Auramel avatar Oct 08 '18 15:10 Auramel

This repository has been closed and moved to mezzio/mezzio; a new issue has been opened at https://github.com/mezzio/mezzio/issues/6.

weierophinney avatar Dec 31 '19 20:12 weierophinney