как мы можем добавить правило в модель Yii для ввода должно быть больше 0 - PullRequest
4 голосов
/ 29 марта 2012

Кто-нибудь знает, как я могу применить правило в модели Yii для ввода должно быть больше 0, без какого-либо пользовательского подхода ..

вроде:

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

            array('SalePrice', 'required', "on"=>"sale"),

        ....
        ....
    );
}

большое спасибо ..

Ответы [ 6 ]

8 голосов
/ 29 марта 2012

Более простой способ 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');

 }
2 голосов
/ 29 марта 2012

Я вижу, что это цена, чтобы вы могли использовать 0,01 (пенни) в качестве минимального значения, например:

array('SalesPrice', 'numerical', 'min'=>0.01),

Обратите внимание, что это решение не подтверждает, что введенное число является ценой, просто оно> 0,01

0 голосов
/ 09 июня 2015

Вы также можете использовать это:

array('SalePrice', 'in','range'=>range(0,90))
0 голосов
/ 07 мая 2015

Никто не проверял документы?

Есть встроенный валидатор CCompareValidator :

['SalePrice', 'compare', 'operator'=>'>', 'compareValue'=>0]
0 голосов
/ 20 декабря 2013

Я знаю, что опоздал на это.Но для дальнейшего использования вы можете использовать этот класс также

<?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').");
 }";
}

 }

?>

Просто убедитесь, что этот класс импортирован перед использованием.

0 голосов
/ 30 марта 2012

Я обработал это с помощью регулярного выражения, может быть, это тоже поможет ..

array('SalePrice', 'match', 'not' => false, 'pattern' => '/[^a-zA-Z0]/', 'message' => 'Please enter a Leader Name', "on"=>"sale"),

большое спасибо @sdjuan & @Ors за вашу помощь и время ..

...