我正在将应用程序从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')),
),
),),
...
);
}
}
如前所述,我能够以本地化方式对数据进行本地化并进行验证,但我无法将其转换回标准化方式......