2017-09-12 4 views
0

J'ai essayé de faire un modèle de mon formulaire personnalisé fait dans un module personnalisé, mais je n'arrive pas à appeler le .tpl.phpDrupal 7 thème non appelé?

Voici ma fonction dans mon thème template.php (qui est sous: drupal/sites/all/thèmes/atheme):

function atheme_theme() { 
return array(
    // Defines the form ID as a theme hook. 
    'agendize_multistep_form' => array(
    // Specifies 'form' as a render element. 
    'render element' => 'form', 
    'path' => drupal_get_path('theme', 'atheme') . '/templates', 
'template' => 'agendize_multistep_form', 
), 
); 
} 

ma forme id est: agendize_multistep_form (j'ai vérifié avec drupal_set_message)

Un mon fichier de modèle est sous:

drupal/sites/all/thèmes /atheme/templates/agendize_multistep_form.tpl.php

J'ai mis intentionnellement un tpl vide afin d'avoir un formulaire vierge affiché. Mais j'ai toujours (même avec un cache effacé) ma forme avec tous les éléments affichés, comme si je n'avais jamais déclaré que ce thème était prioritaire.

Thx pour votre aide

Répondre

1

J'espère que le code ci-dessous vous aide.

Atheme/template.php:

function atheme_theme($existing, $type, $theme, $path) { 
    $items['agendize_multistep_form'] = array(
     'render element' => 'form', 
     'template' => 'agendize_multistep_form', 
     'path' => drupal_get_path('theme', 'atheme') . '/template', 
    ); 

    return $items; 
} 

agendize_multistep_form():

function agendize_multistep_form($form, &$form_state) { 
    $form['first_name'] = array(
     '#type' => 'textfield', 
     '#attributes' => array('placeholder' => t('First name')), 
    ); 
    $form['last_name'] = array(
     '#type' => 'textfield', 
     '#attributes' => array('placeholder' => t('Last name')), 
    ); 
    $form['submit'] = array(
     '#type' => 'submit', 
     '#value' => 'Submit', 
    ); 
    return $form; 
} 

Atheme/template/agendize_multistep_form.tpl.php:

<div class="agendize-form"> 
    <div class="firstname"> 
     <?php print render($form['first_name']); ?> 
    </div> 
    <div class="lastname"> 
     <?php print render($form['last_name']); ?> 
    </div> 
    <div class="submit"> 
     <?php print render($form['submit']); ?> 
    </div> 
</div> 

<!-- Render any remaining elements, such as hidden inputs (token, form_id, etc). --> 
<?php print drupal_render_children($form); ?> 

Nettoyez le cache et vérifiez-le.

+0

La seule différence que vous avez donnée concerne les paramètres donnés dans la méthode du thème. Je l'ai mis en place, toujours le même, même après un cache effacé, le thème n'est pas appliqué. En effet, si je ne mets rien dans le fichier tpl.php, mes composants seront affichés. Il doit afficher une page vierge car le tpl est vide –