Zend框架2表单元素规范化

时间:2016-03-14 15:01:47

标签: forms zend-framework locale normalization

我正在将应用程序从Zend 1迁移到Zend 2并开始急需一个问题。该应用程序适用于不同的语言环境,因此,我需要以规范的方式将数据存储在数据库中。在Zend 1中,我使用了这段代码:

public function normalizeNumber( $value ) 
{
    // get the locale to change the date format
    $this->_locale = Zend_Registry::get('Zend_Locale' );    
    return Zend_Locale_Format::getNumber($value, array('precision' => 2, 'locale' => $this->_locale));
}

不幸的是,Zend 2没有这个 Zend_Locale_Format :: getNumber ,我无法弄清楚替换它的功能。我已尝试使用NumberFormat,但我只获得未规范化的本地化数据。我需要这个函数来规范化我通过POST从表单接收的数据。有人可以提供一些建议吗?

感谢

刚刚完成我的问题。我正在使用的Form元素定义如下:

namespace Profile\Form;

use Zend\Form\Form;
use Zend\InputFilter\InputFilterProviderInterface;

class Profile Extends Form  implements InputFilterProviderInterface
{
    protected $model;

    public function __construct( $model, $name = 'assignmentprofile')
    {
        parent::__construct( $name );
        $this->setAttribute( 'method', 'post');

        $this->model = $model;

        ...

        $this->add( array(
            'name' =>'CommutingRate',
            'type' =>'Zend\Form\Element\Text',
            'options' => array( // list of options to add to the element
                'label' => 'Commuting rate to be charged:',
                'pattern' => '/[0-9.,]/',

            ),
            'attributes' => array( // Attributes to be passed to the HTML lement
                'type' =>'text',
                'required' => 'required',
                'placeholder' => '',
            ),
        ));
    }

    public function getInputFilterSpecification()
    {
        return array(
        ...

        'CommutingRate' => array(
            'required' => true,
            'filters' => array(
                array(  'name' => 'StripTags', ),
                array(  'name' => 'StringTrim'),
                array( 'name' => 'NumberFormat', 'options' => array('locale' => 'en_US', 'style' => 'NumberFormatter::DECIMAL', 'type' => 'NumberFormatter::TYPE_DOUBLE',
                ))
            ),
            'validators' => array(
                array(  'name' => 'Float',
                    'options' => array( 'messages' => array('notFloat' => 'A valid numeric entry is required')),
                ),
            ),),

        ...

        );    
    }
}

如前所述,我能够以本地化方式对数据进行本地化并进行验证,但我无法将其转换回标准化方式......

0 个答案:

没有答案