Вы здесь

Как задать минимальную длину текста комментария?

0

Нашёл направление решения, которое у меня не заработало.

//Add a custom validator to form using hook_form_alter in your custom module.

function custom_mod_form_alter(&$form, &$form_state, $form_id){
  switch($form_id){
    case 'comment_form':
      $form['#validate'] = array_merge( $form['#validate'], array('custom_validator'));
    break;
  }
}

//Define the logic to restrict the length of comment length

function custom_validator($form, $form_state){
    if(strlen($form_state['values']['comment']) < 50)
       form_set_error('comment', t('No No....'));
}

Адаптировал под себя. Создал модуль custom и в custom.module добавил

function custom_form_alter(&$form, &$form_state, $form_id){
    if (strpos($form_id, 'comment_node_') == '0') {
        $form['#validate'] = array_merge($form['#validate'], array('comment_validator'));
    }
}

function comment_validator($form, $form_state){
    if(strlen($form_state['values']['comment']) < 15)
        form_set_error('comment', t('The minimum comment length is 15 symbols.'));
}

На сайте много типов материалов. В настройках капчи увидел, что все формы комментариев начинаются с "comment_node_".
Ошибка вылетает при любом количестве букв. + Режет многие формы в админке.
Правил template.php. Осталась ошибка при любом кол-ве букв.

function mytheme_form_comment_form_alter(&$form, &$form_state, $form_id) {
    $form['#validate'] = array_merge($form['#validate'], array('mytheme_comment_validator'));

}
function mytheme_comment_validator($form, $form_state){
    if(strlen($form_state['values']['comment']) < 15) {
        form_set_error('comment', t('The minimum comment length is 15 symbols.'));
    }
}
Версия Drupal: 
7.x
Категория: 
Comments APIForm API
Вопрос задан 01.12.2016 - 00:01

Ответы

0

С помощью debug() посмотрите где лежит текст комментария в $form_state['values']. Как минимум это поле, поэтому значение не может быть в $form_state['values']['comment'].

Ответ дан 01.12.2016 - 00:42
Аватар пользователя xandeadx
xandeadx
1542

$form_state['values'] вообще пустой даже при дефолтном сообщении в комментарии - не NULL и не array().
$form_state['comment'] получил
Но проверка в валидации длины $form_state['comment']->comment успеха не принесла.

Комментарий оставлен 01.12.2016 - 16:17