view-helpers - 如何注册查看助手

标签 view-helpers zend-framework3

如何使用工厂注册 View helper?

View\Helper\GenerateAnchor::class => GenerateAnchorFactory::class,

最佳答案

我猜你只需要配置文件中的设置,但我将展示在 Zend 3 中注册 View 助手的完整路径

首先,我们需要 View 助手:

namespace MyNamespace\View\Helper;

use Zend\View\Helper\AbstractHelper;

class TestViewHelper extends AbstractHelper
{
    public function __invoke()
    {
        // your code...
    }
}

如果我们需要注入(inject)一些依赖,那么我们需要创建自定义工厂,但是如果我们的 View 助手不需要其他服务/类,那么我们可以跳过这一步

namespace MyNamespace\Factory\View\Helper;

use Interop\Container\ContainerInterface;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use MyNamespace\View\Helper\TestViewHelper;

class TestViewHelperFactory implements FactoryInterface
{
    /**
     *
     * @param ContainerInterface $container
     * @param string $requestedName
     * @param null|array $options
     * @return TestViewHelper
     */
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $class = $requestedName ? $requestedName : TestViewHelper::class;
        $auth = $container->get('MyCustomAuth');
        $viewHelper = new $class($auth);

        return $viewHelper;

    }
    /**
     * Provided for backwards compatibility; proxies to __invoke().
     *
     * @param ContainerInterface|ServiceLocatorInterface $container
     * @return TestViewHelper
     */
    public function createService(ServiceLocatorInterface $container)
    {
        return $this($container, TestViewHelper::class);
    }
}

最后一步是在 module.config.php 中注册我们的 View 助手

'view_helpers' => [
    'aliases' => [
        'viewPlugin' => View\Helper\TestViewHelper::class,
    ],
    'factories' => [
        View\Helper\TestViewHelper::class => InvokableFactory::class // Or use your own factory
    ]
],

而且...在我们的 View 模板中,我们可以这样使用它:

index.phtml

<?php echo $this->viewPlugin(); ?>

关于view-helpers - 如何注册查看助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42670183/

相关文章:

c# - 创建 View 中可用的自定义助手

php - Zend Framework 2 - 如何从库中包含部分内容

marionette - 使用 Marionette 将全局助手注入(inject)所有下划线模板

zend-framework-mvc - ZF3 zend-mvc-skeleton 国际化不起作用

escaping - Zend Framework 3 - 元标记奇怪地转义 - 对规范 url 的影响?

php - 如何在 zend framework php 中使用异常处理?

ruby-on-rails - 是否可以在运行时加载 Rails 助手?

php - 如何添加 View 助手目录(zend 框架)

php - 如何在 Zend Framework 3 中注册自定义表单 View 助手

php - ACL授权失败后ZF3重定向