1

サードパーティのモジュールを使用せずに、テキストボックスに入力されたURLがDrupal 6で有効かどうかを同時に検証し、確認することは可能ですか?いくつかのサンプルコードをいただければ幸いです。

4

1 に答える 1

1

menu.inc(Drupal Coreの一部)のmenu_valid_path()関数はまさにそれを行います。

あなたの特定の質問に答えるには:

サードパーティのモジュールを使用せずに、テキストボックスに入力されたURLがDrupal 6で有効かどうかを同時に検証し、確認することは可能ですか?

はい。

ただし、単純なカスタムモジュールを作成する必要があります。

仮定しましょう:

  1. フォームIDmy_form_1
  2. 問題のフィールド名はmy_path_field_1です。

MODULENAME.moduleファイル内:

<?php
/**
 * Modifies the existing form element 'my_path_field_1' to add
 * 'MODULENAME_path_validate' function to validation array.
 * 
 * (MYMODULE_path_validate is defined below)
 */
function MODULENAME_form_alter(&$form, $form_state, $form_id) {
  switch ($form_id) {
    case 'my_form_1' :
      $form['my_path_field_1']['#element_validate'] = array('MODULENAME_path_validate');
    break;
}
// Note, you could use hook_form_FORM_ID_alter(&$form, &$form_state)
// instead of the above to simplify things if the only thing this module
// does is validite one field for a valid path.

/**
 * Validates the my_path_field_1 using Drupal's built-in menu_valid_path()
 * function. Returns a form error if the field does not contain a valid path
 * or the current user does not have access to the path's permission.
 */
function MODULENAME_path_validate($element, &$form_state) {
  if (!menu_valid_path($element)) {
    form_error($element, t('The path entered does not exist or you do not have permission to access it.'));
  }
}
于 2013-01-03T01:44:31.343 に答える