zend-expressive
zend-expressive copied to clipboard
default_suffix
Hello! How I can change default_suffix from .phtml on something else? I use zend-view with service-manager.
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.
It working! Thank you very much! I believe, that in future will be more easily way
This repository has been closed and moved to mezzio/mezzio; a new issue has been opened at https://github.com/mezzio/mezzio/issues/6.