Model view controller 如何在zend framework2中添加自定义视图辅助对象?

Model view controller 如何在zend framework2中添加自定义视图辅助对象?,model-view-controller,zend-framework2,Model View Controller,Zend Framework2,我使用了github中的骨架zf2应用程序,这里是参考资料中的一个摘录,应该可以帮助您开始: 14.4.2。注册帮助程序Zend\View\Renderer\PhpRenderer构成了一个插件代理,用于管理帮助程序,特别是 Zend\View\HelperBroker,它按顺序扩展基本插件代理 确保我们有有效的助手。默认情况下,HelperBroker 使用Zend\View\HelperLoader作为其助手定位器。助手加载程序是 基于映射的加载程序,这意味着您只需映射 帮助器/插件名称,您

我使用了github中的骨架zf2应用程序,这里是参考资料中的一个摘录,应该可以帮助您开始:

14.4.2。注册帮助程序Zend\View\Renderer\PhpRenderer构成了一个插件代理,用于管理帮助程序,特别是 Zend\View\HelperBroker,它按顺序扩展基本插件代理 确保我们有有效的助手。默认情况下,HelperBroker 使用Zend\View\HelperLoader作为其助手定位器。助手加载程序是 基于映射的加载程序,这意味着您只需映射 帮助器/插件名称,您希望通过该名称将其引用到实际 帮助器/插件的类名

以编程方式,这是按如下方式完成的:

在MVC应用程序中,通常只需传递 通过您的配置将插件添加到类中

可以在需要注册助手的每个模块中完成上述操作 与PhpRenderer;但是,请注意,可以使用另一个模块 使用相同的名称注册帮助程序,以便模块的顺序可以影响 将实际注册哪个帮助程序类

14.4.3。编写自定义帮助程序编写自定义帮助程序很容易。我们建议扩展Zend\View\Helper\AbstractHelper,但在 至少,您只需要实现Zend\View\Helper接口:

如果您希望您的助手能够像调用 方法调用,您还应该实现 __在助手中调用()方法

如前所述,我们建议扩展 Zend\View\Helper\AbstractHelper,因为它实现了定义的方法 在Helper中,为您的开发提供一个起点

定义助手类后,请确保可以自动加载 然后向插件代理注册它

下面是一个示例助手,我们将其命名为“SpecialPurpose”

然后假设当我们向插件代理注册它时,我们映射了它 到字符串“specialpurpose”

在视图脚本中,可以尽可能多地调用SpecialPurpose帮助程序 时间随你喜欢;它将被实例化一次,然后继续存在 为了那个PhpRenderer实例的生命

输出如下所示:

我已经看过《混蛋》一次了。我已经看过《混蛋》两次了。我 看过《混蛋》3次


以下是参考资料的摘录,您可以从中开始:

14.4.2。注册帮助程序Zend\View\Renderer\PhpRenderer构成了一个插件代理,用于管理帮助程序,特别是 Zend\View\HelperBroker,它按顺序扩展基本插件代理 确保我们有有效的助手。默认情况下,HelperBroker 使用Zend\View\HelperLoader作为其助手定位器。助手加载程序是 基于映射的加载程序,这意味着您只需映射 帮助器/插件名称,您希望通过该名称将其引用到实际 帮助器/插件的类名

以编程方式,这是按如下方式完成的:

在MVC应用程序中,通常只需传递 通过您的配置将插件添加到类中

可以在需要注册助手的每个模块中完成上述操作 与PhpRenderer;但是,请注意,可以使用另一个模块 使用相同的名称注册帮助程序,以便模块的顺序可以影响 将实际注册哪个帮助程序类

14.4.3。编写自定义帮助程序编写自定义帮助程序很容易。我们建议扩展Zend\View\Helper\AbstractHelper,但在 至少,您只需要实现Zend\View\Helper接口:

如果您希望您的助手能够像调用 方法调用,您还应该实现 __在助手中调用()方法

如前所述,我们建议扩展 Zend\View\Helper\AbstractHelper,因为它实现了定义的方法 在Helper中,为您的开发提供一个起点

定义助手类后,请确保可以自动加载 然后向插件代理注册它

下面是一个示例助手,我们将其命名为“SpecialPurpose”

然后假设当我们向插件代理注册它时,我们映射了它 到字符串“specialpurpose”

在视图脚本中,可以尽可能多地调用SpecialPurpose帮助程序 时间随你喜欢;它将被实例化一次,然后继续存在 为了那个PhpRenderer实例的生命

输出如下所示:

我已经看过《混蛋》一次了。我已经看过《混蛋》两次了。我 看过《混蛋》3次

// $view is an instance of PhpRenderer
$broker = $view->getBroker();
$loader = $broker->getClassLoader();

// Register singly:
$loader->registerPlugin('lowercase', 'My\Helper\LowerCase');

// Register several:
$loader->registerPlugins(array(
    'lowercase' => 'My\Helper\LowerCase',
    'uppercase' => 'My\Helper\UpperCase',
));
// From within a configuration file
return array(
    'di' => array('instance' => array(
        'Zend\View\HelperLoader' => array('parameters' => array(
            'map' => array(
                'lowercase' => 'My\Helper\LowerCase',
                'uppercase' => 'My\Helper\UpperCase',
            ),
        )),
    )),
);
namespace Zend\View;

interface Helper
{
    /**
     * Set the View object
     *
     * @param  Renderer $view
     * @return Helper
     */
    public function setView(Renderer $view);

    /**
     * Get the View object
     *
     * @return Renderer
     */
    public function getView();
}
namespace My\View\Helper;

use Zend\View\Helper\AbstractHelper;

class SpecialPurpose extends AbstractHelper
{
    protected $count = 0;

    public function __invoke()
    {
        $this->count++;
        $output = sprintf("I have seen 'The Jerk' %d time(s).", $this->count);
        return htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
    }
}
// remember, in a view script, $this refers to the Zend_View instance.
echo $this->specialPurpose();
echo $this->specialPurpose();
echo $this->specialPurpose();