2011-06-21 15 views
1

私はこのフォームを表示するには、hook_entity_viewフックを使用しましたエンティティの内容の一部である必要がありますDrupalのでフォームをテーマ設定

function mymodule_form() 
{ 
    $form['mytext'] = array(
    '#title' => 'Password', 
    '#type' => 'password', 
    '#size' => 10, 
    ); 
    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Cool!', 
    ); 
    $form['cool_submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Cool Submit!', 
    ); 
    return $form; 
} 

私のモジュール(のmymodule)でフォームを...しました表示されているすべてのDrupalエンティティの下で

function mymodule_entity_view($entity, $type, $view_mode, $langcode) { 
    $entity->content['myadditionalfield'] = mymodule_form(); 
} 

このフォームを表示すると、drupalはDIVタグをmytext(パスワードフィールド)に単独で追加します。私はこれをオーバーライドし、このフォームに自分のDIVタグとテーマを提供したいと思います。どうすればいいのですか?

ありがとう:-)

答えて

0

私はこの問題を解決するためにさらに作業しました。そして、問題は解決しました。上記のコードを変更しました...

function mymodule_entity_view($entity, $type, $view_mode, $langcode) { 
    $element = array(
    'start' => array(
     '#type' => 'button', 
     '#name' => 'start', 
     '#button_type' => 'submit', 
    ), 
    'my_text' => array(
     '#type' => 'textfield', 
     '#size' => 30, 
     '#maxlength' => 50, 
    ), 
    'my_submit' => array(
     '#type' => 'button', 
     '#name' => 'Submit Discussion', 
     '#button_type' => 'submit', 
    ), 
); 

    $entity->content['disc_bar'] = $element; 
} 

テキストフィールドまたはパスワードフィールドがレンダリングされるたびに問題が発生し続けました。私はシステム要素情報関数(element_infoフック)の型配列を調べ、textfieldとpasswordフィールドに#theme-wrapperのデフォルト値が付いていることがわかりました。私はこの方法でそれを無効にしようとしました...

'my_text' => array(
     '#type' => 'textfield', 
     '#size' => 30, 
     '#maxlength' => 50, 
     '#theme-wrapper' => '', 
), 

そしてそれは働いた。追加の除外タグを生成しないようにするには...:

+0

あなたは '#theme' => 'your_textfield_theming_function'を追加し、hook_theme()とtheme_your_textfield_theming_function()を使ってテキストフィールド/パスワードのデフォルトのテーマを上書きできます。 (btw、デフォルトのテーマ関数はいくつかのことを行い、フォーム要素のテーマでそれをラップします)。 – yoavmatchulsky

+0

私はそれを試みた。それは動作していないようでした... – 1s2a3n4j5e6e7v

関連する問題