2016-08-24 4 views
1

У меня есть text field, в котором я использовал ckeditorюй текстовое поле validtaion с CKEditor

<div class="row"> 
    <?php echo $form->labelEx($model,'text'); ?> 
    <?php echo $form->textArea($model, 'text', array('id'=>'editor1')); ?> 
    <?php echo $form->error($model,'text'); ?> 
</div> 

<script type="text/javascript"> 
    CKEDITOR.replace('editor1'); 
</script> 

Правила в модели

public function rules() 
{ 
return array(
    array('text', 'required'), 
    array('text', 'validateWordLength') 
); 
} 


public function validateWordLength($attribute,$params) 
{ 
    $total_words= str_word_count($this->text); 
    if($total_words>4000) 
    { 
     $this->addError('text', 'Your description length is exceeded'); 
    } 
    if($total_words<5) 
    { 
     $this->addError('text', 'Your description length is too small'); 
    } 
} 

Это прекрасно работает

1), когда я оставить поле blnk я получаю требуемую текстовую ошибку.

2), когда я пишу слово, меньше их 5 или более чем 4000 я получить желаемую ошибку

но когда я вставить некоторое пустое пространство, то я не получаю сообщение об ошибке и отправке формы.

Пожалуйста, помогите нам в любой помощи!

+0

Попробуйте с $ total_words = str_word_count (обрезки ($ this-> текст)); –

ответ

0

Вы можете использовать регулярное выражение для удаления непечатаемых в кратной вашей функции

public function validateWordLength($attribute,$params) 
{ 
    $this->text = preg_replace('/\s+/', ' ',$this->text); 
    $total_words= str_word_count($this->text); 
    if($total_words>4000) 
    { 
     $this->addError('text', 'Your description length is exceeded'); 
    } 
    if($total_words<5) 
    { 
     $this->addError('text', 'Your description length is too small'); 
    } 
} 
Смежные вопросы