Как мы можем добавить правило в модель Yii для ввода должно быть больше 0
Кто-нибудь знает, как я могу применить правило в модели Yii для ввода должно быть больше 0, без какого-либо специального подхода..
лайк:
public function rules()
{
return array(
....
....
array('SalePrice', 'required', "on"=>"sale"),
....
....
);
}
большое спасибо..
6 ответов
Более простой способarray('SalePrice', 'numerical', 'min'=>1)
с пользовательским методом валидатора
array('SalePrice', 'greaterThanZero')
public function greaterThanZero($attribute,$params)
{
if ($this->$attribute<=0)
$this->addError($attribute, 'Saleprice has to be greater than 0');
}
Я вижу, что это цена, поэтому вы можете использовать 0,01 (пенни) в качестве минимального значения, например:
array('SalesPrice', 'numerical', 'min'=>0.01),
Обратите внимание, что это решение не подтверждает, что введенное число является ценой, просто оно> 0,01
Вы можете использовать это тоже:
array('SalePrice', 'in','range'=>range(0,90))
Никто не проверял документы?
Есть встроенный валидатор CCompareValidator:
['SalePrice', 'compare', 'operator'=>'>', 'compareValue'=>0]
Я знаю, что слишком поздно для этого. Но только для дальнейшего использования вы также можете использовать этот класс
<?php
class greaterThanZero extends CValidator
{
/**
* Validates the attribute of the object.
* If there is any error, the error message is added to the object.
* @param CModel $object the object being validated
* @param string $attribute the attribute being validated
*/
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($value <= 0)
{
$this->addError($object,$attribute,'your password is too weak!');
}
}
/**
* Returns the JavaScript needed for performing client-side validation.
* @param CModel $object the data object being validated
* @param string $attribute the name of the attribute to be validated.
* @return string the client-side validation script.
* @see CActiveForm::enableClientValidation
*/
public function clientValidateAttribute($object,$attribute)
{
$condition="value<=0";
return "
if(".$condition.") { messages.push(".CJSON::encode($object->getAttributeLabel($attribute).' should be greater than 0').");
}";
}
}
?>
Просто убедитесь, что этот класс импортирован перед использованием.
Я обработал это регулярным выражением, может быть, это тоже поможет..
array('SalePrice', 'match', 'not' => false, 'pattern' => '/[^a-zA-Z0]/', 'message' => 'Please enter a Leader Name', "on"=>"sale"),
большое спасибо @sdjuan & @Ors за вашу помощь и время..