Back to top

Autore Topic: Form non funzionanti con il SEF attivo  (Letto 5981 volte)

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Form non funzionanti con il SEF attivo
« il: 19 Set 2010, 21:05:28 »
Ciao, a tutti, eccomi qua di nuovo :D

Sto testando il mio componente e mi sono accorto che non mi funzionano i form se è attiva la modalità SEF.
I link diretti sono ok, ma i form no   :-\
ogni volta che faccio un submit ritorno alla visualizzazione di base del componente.
Premetto che tutti i link dell'attributo action dei form sono trattati con il famoso JRoute.

Non ho creato il file router.php perchè al momento non mi interessa che gli url siano SEF; è un componente per il front-end ma solo per amministratori.

che mi sono perso?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #1 il: 21 Set 2010, 00:41:48 »
ciao,
 è un po' difficile capire il problema, detto così...
la prima ipotesi è che tu non abbia settato gli opportuni valori dei parametri passati (i campi hidden della form in POST) ma tutto dipende da come hai scritto il codice...
tipicamente le form richiamano la index,php passando i parametri necessari  come hidden (option,task, controller,id ...), ma posso solo tirare ad indovinare.

verifica come passi i parametri.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #2 il: 21 Set 2010, 10:36:05 »
ciao, innanzi tutto grazie per l'aiuto.
devo dire che questa cosa mi preoccupa non poco: avere un'estensione che non gira quando il modulo SEF è attivo... vuol dire avere un'estensione inutile  :'(

allora, ho controllato tutto: tutti i campi ci sono, anche perchè in non-SEF il tutto gira che è una meraviglia.
il problema si presenta solo e soltanto con le chiamate post, per i get tutto ok.
credo ci sia un problema con questa benedetta JRoute (ormai me la sogno anche la notte).

infatti io ho trattato la action dei form con la JRoute, non vorrei che non trovando il file router.php si incarti.
Apro una piccola parentesi: dove deve puntare la action? joomla prende i parametri del controller, option e task e poi ci pensa lui. io di solito inserisco il link generale al controller, del tipo

index.php?option=com_miocomp&controller=contr_in_uso

è giusto?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

mau_develop

  • Visitatore
Re:Form non funzionanti con il SEF attivo
« Risposta #3 il: 21 Set 2010, 10:51:45 »
Apro una piccola parentesi: dove deve puntare la action? joomla prende i parametri del controller, option e task e poi ci pensa lui. io di solito inserisco il link generale al controller, del tipo

index.php?option=com_miocomp&controller=contr_in_uso

così ti passano con la get... e i campi hidden solitamente in fondo al form?

M.

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #4 il: 21 Set 2010, 11:09:19 »
allora...
ho modificato l'action del form, ho messo sia index.php che una bella #, ma il risultato non cambia (per la cronaca, qual è il valore consigliato?), ma perlomeno ho capito il perchè.

io non utilizzo un controller solo, ma più di uno, per cui nel mio entry point ho questa riga

if($controller JRequest::getVar('controller')) {
	
require_once (
JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php');}


però ho visto che il parametro non viene mai passato tramite le post, per cui non mi carica il controller etc etc.
per quale cavolo di motivo le chiamate mi escono monche?

mi sa che oggi mi aspetta una giornata di debug :D
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

mau_develop

  • Visitatore
Re:Form non funzionanti con il SEF attivo
« Risposta #5 il: 21 Set 2010, 11:15:17 »
beh solitamente anch'io ho più di un controller.

<form action="index.php" method="post" name="adminForm"> ... nessun #

..alla fine...

<input type="hidden" name="option" value="com_pippo" />
<input type="hidden" name="id" value="<?php echo $this->rows['id']; ?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="controller" value="nomecontroller" />

M.

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #6 il: 21 Set 2010, 11:38:32 »
anch'io ho messo le stesse identiche righe...

mi sono accorto che quando fa il submit non mi passa tutti i parametri, ma solo alcuni.
inutile dirlo che tutti i campi hidden sono presenti e i valori sono "ficcati dentro", quindi non vengono da una qualche elaborazione.

c'è un modo per sapere che cosa passa nel momento in cui faccio il submit?
mi sa che mi dovrò ingengnare con il javascript...

cmq, dopo aver acceso un cero all'instant debug, ne accenderò altri per il vostro aiuto :D
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

mau_develop

  • Visitatore
Re:Form non funzionanti con il SEF attivo
« Risposta #7 il: 21 Set 2010, 11:41:39 »
c'è un modo per sapere che cosa passa nel momento in cui faccio il submit?
-------------------------------------------------------------------------------------------------------

nel controller o nello switch dei controller metti un print_r($_POST) fuori da eventuali return (se c'è commentalo un'attimo)

M.

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #8 il: 21 Set 2010, 12:24:05 »
allora...

ho capito perchè non mi prendeva il controller etc etc.
era un problema di javascript, avevo messo un controllo sulla funzione submitbutton, l'ho spostata da un'altra parte (usando la funzione ButtonConfirm della JToolbar) e adesso nel post c'è tutto.

ovviamente continua a non funzionare, ma quindi il problema è da un'altra parte.
nel momento in cui faccio il submit, joomla inizia ad interpretare tutto quanto correttamente (sono arrivato fino al caricamento della view...), però la pagina va per conto suo!

infatti mi segue l'attributo href="#" inserito nel bottone della toolbar!  :o

come mai? chiamo un'esorcista?

EDIT: ovviamente tutto questo non succede se non sono in SEF -.-
« Ultima modifica: 21 Set 2010, 12:29:50 da tampe125 »
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #9 il: 21 Set 2010, 14:07:02 »
Ciao, hai joomfish installato?
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #10 il: 21 Set 2010, 14:18:03 »
nu...

eh eh a quanto pare questo malato sta diventando un caso di studio :D
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #11 il: 21 Set 2010, 14:34:24 »
Citazione
ovviamente continua a non funzionare, ma quindi il problema è da un'altra parte.
nel momento in cui faccio il submit, joomla inizia ad interpretare tutto quanto correttamente (sono arrivato fino al caricamento della view...), però la pagina va per conto suo!

infatti mi segue l'attributo href="#" inserito nel bottone della toolbar!

???Potresti spiegarti meglio
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #12 il: 21 Set 2010, 14:49:01 »
lo so, sembra strano ma è così.

php va avanti bello bello con la sua esecuzione, mentre la pagina naviga per i xxx suoi.
quindi Joomla! carica tutto quanto (controller, view etc etc), ma in realtà la pagina segue il link "#", che, processato dal routing mi riporta alla pagina di default del componente.
grazie a firebug ho cambiato al volo l'attributo href e tutto funziona (spero, ora devo fare controlli più approfonditi).

però è una pezza di quelle peggiori, perchè tutto dovrebbe funzionare: ho usato solo funzioni core di Joomla, quindi...
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #13 il: 21 Set 2010, 20:47:00 »
vedo che la discussione è andata avanti  ;D

1.
la form deve puntare alla index, tutti i parametri vanno come hidden, non mischiare dati in GET e POST se no non sai quale sarà valutato prima. che passi a JRoute??

2.
dati passati.
http://extensions.joomla.org/extensions/access-a-security/backend-a-full-access-control/13883
è una estensione stupida stupida ma ti dà il dump di $_POST e $_GET per ogni pagina.

3.
vi strozzo tutti:
Codice: [Seleziona]
$controller = JRequest::getVar('controller')
require_once (JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php');}
LFI assicurata!

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #14 il: 21 Set 2010, 20:55:30 »
1. ok.
2. di solito uso il debug di eclipse
3.
LFI??
cosa vuol dire?

ah solo una cosa: occhio a quello che dici, perchè la base è stata creata con il tuo programmino...  ;D
a proposito, lo sai che non in tutte le pagine metti il controllo define('_JEXEC')?
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

mau_develop

  • Visitatore
Re:Form non funzionanti con il SEF attivo
« Risposta #15 il: 21 Set 2010, 21:09:57 »
vi strozzo tutti:
--------------------

if( $mycontroller = JRequest::getWord('controller')){

qs è il mio...gli ho confermato la modalità dinamica del controller .. quello che c'era scritto in effettinn l'ho notato, cmq hai perfettamente ragione:(

M.

ps... passa anche per l'array dei controller implementati...
« Ultima modifica: 21 Set 2010, 21:11:32 da mau_develop »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Form non funzionanti con il SEF attivo
« Risposta #16 il: 21 Set 2010, 21:22:09 »
LFI = local file inclusion

stai usando una versione vecchia, comunque sul sito è riportato l'avviso di sicurezza.
adesso verifico il controllo JEXEC

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif