bir modül drupal form düzen

2 Cevap php

I created my own module called "cssswitch". I'm trying to create my own html layout to display the admin form portion of the module. I understand how to use the hook_form_alter() to modify form elements, but I need to create the entire form layout to make some fields appear next to each other. It seems I need something like the way I have the frontend view of the node displayed with theme_cssswitch_display(), but for the admin part of the node.

function cssswitch_form_alter(&$form, $form_state, $form_id) {

    switch($form_id) {  

        case 'cssswitch_node_form':
            $form['hour_start']['#prefix'] = '<div class="start-box">';
            $form['ampm_start']['#suffix'] = '</div>';
            $form['ampm_start']['#attributes'] = array("style" => "border-width:2px;");
            break;
    }

}

function cssswitch_theme() {

    return array(
      'cssswitch_display' => array(
        'arguments' => array('node'),
      ),

    );

}

// to display the view of the node
function theme_cssswitch_display($node) {

  $output = '<div class="cssswitch-cssfilename">Filename: '.
    check_plain($node->cssfilename). '</div>';
  $output .= '<div class="cssswitch-time_start">Start: '.
    check_plain($node->hour_start). ':'.check_plain($node->minute_start).' '.check_plain($node->ampm_start).'</div>';

  $output .= '<div class="cssswitch-time_end">End: '.
    check_plain($node->hour_end). ':'.check_plain($node->minute_end).' '.check_plain($node->ampm_end).'</div>';    

  return $output;
}

Herhangi bir yardım için teşekkür

2 Cevap

Başka bir modül tanımlanmış bir formu değiştirmek istiyorsanız hook_form_alter sadece gereklidir. Eğer şeklini tanımlayan olduğundan, istediğiniz gibi yerine sadece bunu tanımlayabilir, onu değiştirmek gerekmez.

Eğer formun biçimlendirme değiştirmek için kullanmanız gereken, formun kendisi ve / veya bunun elemanları #theme niteliktir. Bununla beraber formu işlemek için kendi tema fonksiyonlarını kullanabilir ve elemanları bulunuyor.

Drupal's FAPI reference yardım arayın.

I found most of what I need now. I had to use the "suggested" form id that Themer Info" gave me which was "cssswitch_node_form". I used that in my form builing function called "cssswitch_form() like this: $form['#theme'] = 'cssswitch_node_form';

Ben de bu işlevi bu adı kullanmak gerekir:

function cssswitch_theme() {

    return array(
      'cssswitch_display' => array(
        'arguments' => array('node'),
      ),

      'cssswitch_node_form' => array(
        'arguments' => array('form' => NULL),
      ),      


    );

Ve burada aynı adı fonksiyonudur fakat "theme_" ona önüne:

function theme_cssswitch_node_form($form) {

    $output='';
    $output.='<span>testing 123</span>';
    $output.=drupal_render($form['hour_start']['name']);
    $output.=drupal_render($form['minute_start']);
        $output .= drupal_render($form);

  return $output;

}

Ben hala otomatik olarak ne istediğini olmadığı divlere ile form elemanları çevreleyen html kodu sorun var. Bu durumda, ben yanında bazı form elemanları yan yerleştirmek istiyorum. Ben bu işlevi drupal_render () ne var sanırım. Sadece tüm html biçimlendirme olmadan bana form öğesi verecek bir işlev çağrısı var mı?

teşekkürler