как научить систему понимать запятую как точку?
https://prnt.sc/r3c7v1
p.s.
Код: Выделить всё
public function rules()
{
return [
[['amount'], 'number'],
Код: Выделить всё
public function rules()
{
return [
[['amount'], 'number'],
Код: Выделить всё
return [
['your_number_field', 'filter', 'filter' => function ($value) {
return str_replace(',', '.', $value);
}],
['your_number_field', 'number'],
];
Код: Выделить всё
private $locale;
public function beforeValidate()
{
$this->locale = setlocale(LC_ALL, 0);
setlocale(LC_ALL, 'ru_RU.UTF-8');
}
public function afterValidate()
{
setlocale(LC_ALL, $this->locale);
}
Код: Выделить всё
['amount', 'filter', 'filter' => function ($value) {
$fmt = numfmt_create(\Yii::$app->formatter->locale, \NumberFormatter::DECIMAL);
$value = numfmt_parse($fmt, $value);
return $value;
}, 'skipOnEmpty' => true],
[['amount'], 'number', 'skipOnEmpty' => true],
Это не два способа, а вариация первого. И она не будет работать с числами, где разделитель точка.unknownby писал(а): ↑2020.02.17, 10:09 Можно попробовать еще так. Объединив два способа.Код: Выделить всё
['amount', 'filter', 'filter' => function ($value) { $fmt = numfmt_create(\Yii::$app->formatter->locale, \NumberFormatter::DECIMAL); $value = numfmt_parse($fmt, $value); return $value; }, 'skipOnEmpty' => true], [['amount'], 'number', 'skipOnEmpty' => true],
Так он же хочет, чтобы понимал запятую как точку. Он не говорил о том, чтобы можно было вводить двумя способами. Ему нужно строго запятая вместо точки. Пусть сам уже смотрит, что ему подойдетyiiliveext писал(а): ↑2020.02.17, 10:33 Это не два способа, а вариация первого. И она не будет работать с числами, где разделитель точка.
B c дефолтным английским языком тоже не будет работать ваш вариант)unknownby писал(а): ↑2020.02.17, 11:09Так он же хочет, чтобы понимал запятую как точку. Он не говорил о том, чтобы можно было вводить двумя способами. Ему нужно строго запятая вместо точки. Пусть сам уже смотрит, что ему подойдетyiiliveext писал(а): ↑2020.02.17, 10:33 Это не два способа, а вариация первого. И она не будет работать с числами, где разделитель точка.
Согласенyiiliveext писал(а): ↑2020.02.17, 12:02 B c дефолтным английским языком тоже не будет работать ваш вариант)
Пробуй первый способ, который выше указан
согласен, спасибо всем