Hello in our country people use comma’s and dots as a decimal seperator.
1,50 as well as 1.50
Is there a way instead of getting notified that 1,50 isn’t a number,
to change the comma in a dot.
By key press up (jQuery), or before getting notified that the input isn’t a number.
I’m using the Basic template, please tell me where and which files to adjust or override.
Thanks in advance,
Greetings from Holland!
CeBe
May 19, 2014, 1:22pm
2
You can adjust the NumberValidator::$numberPattern property to include comma or dot:
[['myAttribute'], 'number', 'numberPattern' => '/^\s*[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?\s*$/'],
http://www.yiiframework.com/doc-2.0/yii-validators-numbervalidator.html#$numberPattern-detail
mmx
(Gene Rodrigues)
May 19, 2014, 2:18pm
3
Hello in our country people use comma’s and dots as a decimal seperator.
1,50 as well as 1.50
Is there a way instead of getting notified that 1,50 isn’t a number,
to change the comma in a dot.
By key press up (jQuery), or before getting notified that the input isn’t a number.
I’m using the Basic template, please tell me where and which files to adjust or override.
Thanks in advance,
Greetings from Holland!
Have you considered using a spinner rather than an input element. A spinner would eliminate the problem. Take a look at the Kartik-v/Yii2-Widgets extension.
That looks good, but where do I put my "before update" code to transform the comma to a dot before saving to my database?
A very good idea! Thanks I’ll look into it as well…
Got it, I’ve adjusted the rules of my model
public function rules() {
return [
[['prod_name', 'prod_price'], 'required'],
[['prod_price'], 'number', 'numberPattern' => '/^\s*[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?\s*$/'],
[['prod_name'], 'string', 'max' => 40],
[['prod_name'], 'unique']
];
}
And added the beforeSave to my model
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->prod_price = str_replace(",", ".", $this->prod_price);
return true;
} else {
return false;
}
}