Newsgroup: it.comp.www.php
Titolo: Strano problema con HTML_QuickForm

Salve a tutti!
Sto utilizzando la classe PEAR in oggetto per creare un form in una pagina  
web ed incontro un problema molto strano nell'output del codice HTML.
In locale tutto funziona correttamente (e questo mi fa pensare che il mio  
codice non sia affetto da errori) ed il codice che ottengo ha un tag di  
apertura del form corretto:
...
<form action="path/index.php" method="post" name="new" id="new">
...
mentre quando eseguo la stessa pagina sul server remoto la classe  
"sbaglia" il codice in questa maniera:
...
<formArray>
...
Le pagine (remota/locale) sono assolutamente identiche, così come le  
versioni delle classi PEAR.
Le versioni di server e PHP, anche se non credo possano centrare col  
problema in questione, sono:
- locale: Win XP Pro, apache 1.3.27, php 4.3.3
- remoto: Linux, apache 2.0.53, php 4.3.10
Prima di annoiarvi postando altri particolari, vorrei sapere se qualcuno  
ha idea di cosa stia accadendo!
Ho già cercato in giro per il web e sui newsgroup, ma l'unica cosa che ho  
trovato è un thread in polacco su pl.comp.lang.php....
grazie
Daniele

 <formArray>
error_reporting? display_errors?
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 error_reporting? display_errors?
impostando error_reporting a E_ALL ottengo una Notice (ma solo sul server  
remoto):
Notice: Array to string conversion in  
/path/htdocs/inc/pear/PEAR/HTML/QuickForm/Renderer/Default.php on line 190
E' proprio come se in quel punto il codice vada a fare la echo di un array.
La cosa strana è che in locale non succede!


perchè non posti la riga incriminata ?
ciao
Alesi_27

 ha scritto:

Il fatto è che non c'è una vera e propria riga incriminata.
Ho provato ad esempio a fare un form praticamente vuoto con il seguente  
codice:
require_once 'HTML/QuickForm.php';
$form =& new HTML_QuickForm('test', 'post');
$form->display();
in locale ottengo:
<form action="/path/index.php" method="post" name="test" id="test">
<div>
<table border="0"></table>
</div>
</form>
in remoto invece:
<formArray>
<div>
<table border="0"></table>
</div>
</form>
è come se ci fosse un errore nel codice della classe PEAR, ma il codice  
l'ho anche ispezionato e sembra assolutamente corretto.
La riga "incriminata" per il PHP (in  
PEAR/HTML/QuickForm/Renderer/Default.php riga 190), è la seguente:
...
$html = str_replace('{attributes}', $form->getAttributes(true),  
$this->_formTemplate);
...
quindi, vista la "Notice" ed il risultato del codice HTML, sembra che il  
metodo getAttributes() restituisca un array invece di una stringa.
Ma analizzando il metodo in questione (definito in PEAR/HTML/Common.php  
riga 286), la cosa è impossibile, come potete vedere voi stessi:
...
     function getAttributes($asString = false)
     {
         if ($asString) {
             return $this->_getAttrString($this->_attributes);
         } else {
             return $this->_attributes;
         }
     } //end func getAttributes
...
il problema è davvero misterioso...
Qualcuno ha qualche idea?
grazie
Daniele