0

Drupal 6 でカスタム モジュールを作成しようとしていて、フォーム API を使用して管理領域にシンプルなフォームを追加しようとしています。

フォームが表示されていますが、ページを送信してからリロードするときに、フォームを取得できないようです。&$form_state の 2 番目のパラメーターを hook_form 関数に渡そうとしましたが、2 番目のパラメーターが見つからないというエラーが発生します。

これは簡単なことだと思いますが、よくわかりません。これが私の .module コードです。

/*
* Implements hook_init().
*/

function movehub_featured_links_block_init() {

    drupal_add_css(drupal_get_path('module', 'movehub_featured_links_block') . '/assets/css/movehub-featured-links-block-style.css');

}

/**
* Implements hook_theme().
*/

function movehub_featured_links_block_theme() {

    return array(
        'movehub_featured_links_block_manage' => array(
            'template' => 'movehub-featured-links-block-admin-manage'
        ),
        'movehub_featured_links_block_add' => array(
            'template' => 'movehub-featured-links-block-admin-add',
            'arguments' => array('link_id' => null)
        ),
    );

}

function movehub_featured_links_block_manage() {

    return theme('movehub_featured_links_block_manage');

}

function movehub_featured_links_block_add_form(&$form) {print_r($form);

    $form = array();

    $form['#attributes'] = array('enctype' => 'multipart/form-data');

    $form['link_title'] = array(
        '#type' => 'textfield',
        '#title' => t('Link Title')
    );

    $form['image'] = array(
        '#type' => 'file',
        '#title' => t('Image')
    );

    $form['image_hover'] = array(
        '#type' => 'file',
        '#title' => t('Hover Image')
    );

    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Add!')
    );

    return $form;

}

/**
* Implements hook_menu().
*/

function movehub_featured_links_block_menu() {

    $items = array();

    $items['admin/featured_links'] = array(
        'title' => 'Featured Links',
        'description' => 'Add, view and edit featured links..',
        'page callback' => 'movehub_featured_links_block_manage',
        'page arguments' => array('movehub_featured_links_block_admin'),
        'access arguments' => array('administer movehub_featured_links_block settings'),
        'type' => MENU_NORMAL_ITEM,
    );

    $items['admin/featured_links/manage'] = array(
        'title' => 'Manage',
        'description' => 'Add, view and edit featured links.',
        'page callback' => 'movehub_featured_links_block_manage',
        'page arguments' => array('movehub_featured_links_block_admin'),
        'access arguments' => array('administer movehub_featured_links_block settings'),
        'type' => MENU_NORMAL_ITEM,
    );

    $items['admin/featured_links/add'] = array(
        'title' => 'Add',
        'description' => 'Add a new featured link.',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('movehub_featured_links_block_add_form'),
        'access arguments' => array('administer movehub_featured_links_block settings'),
        'type' => MENU_CALLBACK
    );

    return $items;

}

function movehub_featured_links_block_add_form_submit($form, &$form_state) {



}

function movehub_featured_links_block_add_form_validation($form, &$form_state) {



}
4

2 に答える 2

0

フォーム関数で、各フィールドに「#default_value」を追加します。(詳細については、 Drupal 6 フォーム API #default_valueを参照してください)

フォームのフィールド定義は次のようになります。

$form['link_title'] = array(
    '#type' => 'textfield',
    '#title' => t('Link Title'),
    '#default_value' => 'My custom link title',
);

次に、フォーム API は、フォームを最初にロードするときに、指定されたデフォルト値を入力する必要があります。このようにすると、ユーザーが検証に失敗し、間違いを修正するためにフォームが返された場合、フォームの値には、以前に入力した更新されたテキストが含まれている必要があります。Drupal は、表示するフォームを更新するときに form_state を使用してフォームにデータを入力するため、#default_value を設定するだけであれば、その側面について心配する必要はありません。

于 2014-10-03T00:15:01.137 に答える