Поле Drupal CCK не проверяется с помощью hook_nodeapi - PullRequest
0 голосов
/ 13 апреля 2011

Я пытаюсь сделать пользовательскую проверку по полю ссылки в Drupal CCk. В настоящее время я использую модуль Link Contributed. Так что в моем hook_nodeapi и случае подтвердите Обратите внимание, что это значение принимает неограниченные значения, это есть foreach.

case 'validate':  
  if ($node->type == 'flow')  
  {  
      foreach ($node->field_post_twitter as $twitter_v)  
      {  
        $pattern = '/(http|https|ftp):[\/]{2}twitter\.com/i';  
          if (preg_match_all($pattern, $twitter_v['url']))  
          {  
            form_set_error('not working');  
          }  
       }  
  }  
break; 

Но это не проверка, хотя, если я положил его в обычный файл php, он работает. Есть идеи о том, что мне не хватает?

Спасибо

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Вам следует использовать hook_form_alter для изменения массива проверки текущей формы и добавить в этот массив пользовательскую функцию проверки.

function mymodule_form_alter(&$form, &$form_state, $form_id){
  switch($node->type){
    case 'test_node_form':
      $form['#validate'][] = 'my_custom_validate';
      break;
  }
}

function my_custom_validate($form, &$form_state){
  $values = $form_state['values'];
  if(/* conditions */){
    $message = t('Oops!');
    form_set_error('', $message);
  }
}
0 голосов
/ 13 апреля 2011

Попробуйте установить вес вашего модуля из таблицы system в вашей базе данных на самый высокий, чтобы ваш хук вызывался последним, и все поля CCK, включая (field_post_twitter), который, вероятно, еще не заполнен в вашем случае, уже заселена.

Не забудьте в конце концов очистить кеш (drush cc).

...