2009-10-26 4 views
1

J'essaye de commencer avec HTML_QuickForm de PEAR mais j'ai un problème. Pour une raison quelconque, toutes mes données de formulaire sont soumises avec GET et non POST. La valeur par défaut est supposée être POST et j'ai essayé de la définir explicitement. La seule chose que j'ai pu comprendre est que quand j'appelle simplement display() sur le formulaire cela fonctionne correctement. J'utilise un modèle statique et pour une raison quelconque, lorsque je l'utilise, cela ne fonctionne pas correctement. Mon code est présenté ci-dessous.PHP - QuickForm soumet comme obtenir plutôt que de poster

<?php 
include_once 'HTML/QuickForm.php'; 
include_once 'HTML/Template/Sigma.php'; 
include_once 'HTML/QuickForm/Renderer/ITStatic.php'; 

$form = new HTML_QuickForm('formtest', 'post'); 
$form->addElement('text', 'mytext'); 
$form->addRule('mytext', 'This is required', 'required'); 
$form->addElement('submit', 'mysubmit', 'This is a submit button'); 

$tpl = & new HTML_Template_Sigma('.'); 
$tpl->loadTemplateFile('template.html'); 
$renderer = & new HTML_QuickForm_Renderer_ITStatic($tpl); 
$renderer->setRequiredTemplate('{label}<font color="red" size="1">*</font>'); 
$renderer->setErrorTemplate('<font color="red">{error}</font><br />{html}'); 
$form->accept($renderer); 
$tpl->show(); 
?> 

Répondre

1

Nevermind, je suis un idiot et presque immédiatement réalisé le problème. Mon fichier modèle ressemblait à ceci:

<html> 
<head><title>Test Form</title></head> 
<body> 
<form> 
{formtest_mytext_html}<br /> 
{formtest_mytext_label}<br /> 
{formtest_mysubmit_html}<br /> 
{formtest_mysubmit_label}<br /> 
</form> 
</body> 
</html> 

Le problème était que ma balise form avait aucun moyen de savoir qu'il était censé être POST il toujours par défaut GET. Au lieu de cela la balise form devrait ressembler cette

<form {formtest_attributes}> 

Les {} formtest_attributes étant bien sûr le bit qui indique la forme de se faire POST.

Questions connexes