0

githubのスケルトンzf2アプリケーションを使用しました

4

1 に答える 1

4

これは、始めるためのZF2リファレンスからの抜粋です。

14.4.2。ヘルパーの登録Zend\View \ Renderer \ PhpRendererは、ヘルパーを管理するためのプラグインブローカー、具体的にはZend \ View \ HelperBrokerのインスタンスを構成します。これは、有効なヘルパーを確実に使用できるように、ベースプラグインブローカーを拡張します。HelperBrokerは、デフォルトでZend \ View\HelperLoaderをヘルパーロケーターとして使用します。HelperLoaderはマップベースのローダーです。つまり、参照するヘルパー/プラグイン名を、ヘルパー/プラグインの実際のクラス名にマップするだけです。

プログラム的に、これは次のように実行されます。

// $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',
));

MVCアプリケーション内では、通常、構成を介してプラグインのマップをクラスに渡すだけです。

// 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',
            ),
        )),
    )),
);

上記は、ヘルパーをPhpRendererに登録する必要がある各モジュールで実行できます。ただし、別のモジュールが同じ名前のヘルパーを登録できるため、モジュールの順序が実際に登録されるヘルパークラスに影響を与える可能性があることに注意してください。

14.4.3。カスタムヘルパーの作成カスタムヘルパーの作成は簡単です。Zend \ View \ Helper \ AbstractHelperを拡張することをお勧めしますが、少なくとも、Zend \ View\Helperインターフェイスを実装するだけで済みます。

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();
}

ヘルパーをPhpRendererのメソッド呼び出しであるかのように呼び出せるようにする場合は、ヘルパー内に__invoke()メソッドも実装する必要があります。

前述のように、Zend \ View \ Helper \ AbstractHelperを拡張することをお勧めします。これは、Helperで定義されたメソッドを実装し、開発の先頭に立つことができるためです。

ヘルパークラスを定義したら、それを自動ロードできることを確認してから、プラグインブローカーに登録します。

これが「SpecialPurpose」というタイトルのヘルパーの例です。

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');
    }
}

次に、プラグインブローカーに登録するときに、文字列「specialpurpose」にマップするとします。

ビュースクリプト内で、SpecialPurposeヘルパーを何度でも呼び出すことができます。一度インスタンス化され、その後、そのPhpRendererインスタンスの存続期間中持続します。

// remember, in a view script, $this refers to the Zend_View instance.
echo $this->specialPurpose();
echo $this->specialPurpose();
echo $this->specialPurpose();

出力は次のようになります。

私は「ジャーク」を1回見ました。私は「ジャーク」を2回見ました。私は「ジャーク」を3回見ました。

于 2012-03-07T00:32:00.353 に答える