2010-05-08 7 views
0

Je sais que ce n'est pas un forum Drupal mais, comme je ne reçois aucune réponse là-bas, j'ai décidé de donner une chance ici.Comment faire drupal connu soumission de contenu personnalisé

Je crée un site Web qui accepte le contenu personnalisé des utilisateurs. Donc, d'ailleurs, ce site a un formulaire et un module personnalisé. Au lieu d'utiliser le thème admin, ce formulaire est placé dans un modèle personnalisé créé pour avoir un aspect uniforme avec le reste des pages. Par conséquent, la création d'éléments de formulaire via hook_form est hors de question. Voici où mes problèmes se trouvent. Comme ce formulaire utilise un thème personnalisé, je ne suis pas certain de savoir ce que je peux faire pour que drupal sache que l'utilisateur soumet de nouvelles données de contenu lorsque le formulaire est soumis.

  • Est-ce que je dois utiliser le même chaîne de requête de la page de présentation du contenu de la page admin comme - q = node/add/page pour attribut action du formulaire html? Le seul moyen est de mapper l'URL à ma fonction personnalisée et d'invoquer une sorte de crochet à l'intérieur de celui-ci?

Merci

Répondre

3

Vous pouvez littéralement créer toutes les balises que vous voulez pour votre formulaire, tout ce que vous devez faire est d'utiliser le lorsque vous définissez la forme attribut #theme. Avec lui, vous pouvez définir des fonctions de thème pour le formulaire lui-même et l'un des éléments.

Il s'agit d'une très mauvaise idée de ne pas utiliser le FAPI de Drupal. Il résout tant de problèmes pour vous, et ne pas l'utiliser serait la première étape à prendre si vous voulez ouvrir un trou de sécurité sur votre site. Un framework de développement comme Drupal n'a pas beaucoup de valeur si vous n'utilisez pas ses API.

Edit:
La première chose à faire, est d'aller à Drupal FAPI reference. Vous pouvez apprendre presque tout sur le FAPI là-bas.

Vous pouvez utiliser un gabarit si vous voulez, c'est juste un thème Drupal de base, mais je déconseille. Ce serait beaucoup plus facile à maintenir si vous créiez des fonctions de thèmes pour tous les éléments et que vous pouviez simplement parcourir tous les éléments et les restituer comme Drupal, au lieu de devoir éditer un fichier modèle forme. Cela pourrait être un peu plus de travail maintenant, mais il y a une récompense à ce travail: un code plus propre et plus facile à maintenir.

Dans le code, il ressemble à ceci:

$form['item'] = array(
    ... 
    '#theme' => 'theme_function', 
); 

Faire cela, l'élément sera rendu à l'aide du "theme_function". Vous pouvez voir un exemple d'un tel theme function for textfields.

+0

Est-il possible d'utiliser un modèle au lieu de la fonction? Parce que ma forme est assez compliquée de manière à avoir plus de 40 éléments à l'intérieur et je devrai probablement en ajouter d'autres à l'avenir. Je serais heureux si vous pouviez me donner un pointeur vers la référence que vous avez suggérée car celle que j'ai trouvée sur le site de drupal ne me dit pas grand chose sur #theme. – Andrew