3

このコードが機能しない理由を解明するために一晩中費やしました

$inputFilter = new InputFilter();
$factory = new InputFactory();

$translator = new \Zend\I18n\Translator\Translator();
//Copy of file found in resources/languages/es/Zend_Validate.php
$translator->addTranslationFile('phparray', './module/Product/language/zend_validate.php');

$inputFilter->add(
    $factory->createInput(
        array(
            'name' => 'idpro',
            'required' => true,
            'filters' => array(
                array('name' => 'Int'),
            ),
        )
    )
);

$inputFilter->add(
    $factory->createInput(
        array(
            'name' => 'nompro',
            'validators' => array(
                array(
                    'name' => 'EmailAddress',
                    'options' => array(
                        'translator' => $translator
                    )
                ),
            ),
        )
    )
);

php5-intl をインストールし、php.ini で有効にしました。

しかし、それは機能しません。同じメッセージが表示されます。値が必要で空にすることはできませんが、翻訳されたものにする必要があります...

どうもありがとうございました !

4

2 に答える 2

3

フォームエラーを適切に翻訳するために私がしたことは次のとおりです。

module.config.php

<?php
return array(
    'service_manager' => array(
        'factories' => array(
            'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory'
        )
    ),
    'translator' => array(
        'locale' => 'en',
        'translation_file_patterns' => array(
            array(
                'type'        => 'gettext',
                'base_dir'    => __DIR__ . '/../language',
                'pattern'     => '%s.mo',
                'text_domain' => 'admin'
            ),
            array(
                'type'        => 'phparray',
                'base_dir'    => __DIR__ . '/../resources/languages',
                'pattern'     => '/%s/Zend_Validate.php',
                'text_domain' => 'default'
            )
        )
    )
);
于 2012-12-31T18:30:14.663 に答える
0

この方法でトランスレーターを設定することはできません。

代わりにこの静的メソッドを使用してください:

\Zend\Validator\AbstractValidator::setDefaultTranslator($translator, 'default');

お役に立てれば。

于 2012-12-30T19:48:31.497 に答える