5

メソッドを拡張しZend\Form\View\Helper\FormMultiCheckboxて上書きするフォーム ビュー ヘルパーを作成しました。renderOptions(...)

<?php
namespace MyNamespace\Form\View\Helper;

use Zend\Form\View\Helper\FormMultiCheckbox as ZendFormMultiCheckbox;

class FormMultiCheckbox extends ZendFormMultiCheckbox 
{

    protected function renderOptions(...)
    {
        ...
        $label     = $escapeHtmlHelper($label);
        $labelOpen = $labelHelper->openTag($labelAttributes);
        switch ($labelPosition) {
            case self::LABEL_PREPEND:
                $template  = $labelOpen . $label . $labelClose . '%s';
                break;
            case self::LABEL_APPEND:
            default:
                $template  = '%s' . $labelOpen . $label . $labelClose;
                break;
        }
        $markup = sprintf($template, $input);

        $combinedMarkup[] = $markup;
        ...
    }

}

次のステップは、新しいビュー ヘルパーを登録することです。私はここに示されているようにこれをやっています:

namespace Application;

use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;

class Module {

    ...

    public function getViewHelperConfig() {
        return array(
            'invokables' => array(
                'FormMultiCheckboxViewHelper' => 'MyNamespace\Form\View\Helper\FormMultiCheckbox',
            )
        );
    }
}

ここで私の質問: アプリケーションで代わりにフォーム ビュー ヘルパーを使用するにはどうすればよいZend\Form\View\Helper\FormMultiCheckboxですか?

4

2 に答える 2

10

アンドリューの答えは機能しますが、必須ではありません。デフォルトのビューヘルパー名を使用してヘルパークラスにマップするだけで、アプリケーションは代わりにヘルパーを使用します

public function getViewHelperConfig() {
    return array(
        'invokables' => array(
            'formmulticheckbox' => 'MyNamespace\Form\View\Helper\FormMultiCheckbox',
        ),                
    );
}
于 2013-04-11T03:36:33.347 に答える