2015-03-23 14 views
5

Sto costruendo un modulo opencart per il mio sito e ho una pagina che mi serve un pulsante 'Aggiorna' per e un pulsante 'continua', dove I POSTO a entrambi (nel caso del pulsante 'Aggiorna' o su bespoke2.php con il pulsante 'continua'. Ho aggiunto il controller e le viste di seguito. Sfortunatamente quando si fa clic sul pulsante Continua, vengono reindirizzati alla pagina corretta, ma le variabili POST non vengono con esso Il pulsante di aggiornamento funziona bene Qualcuno può dirmi dove potrei andare storto, ho passato ore a giocarci e ho cercato nel forum e Google non ha prodotto molto?Reindirizza e pubblica in opencart

Questo è il modulo .php

<form name="frm" method="POST" action=""> 
<input type="text" name="size_width"> 
<input type="submit" name="submit1" class= "button" Value="<?=$button_continue?>" /> 
<input type="submit" name="submit2" class= "button" Value="<?=$button_refresh?>" /> 

Questa è la controller.php

if (isset($this->request->post['submit1'])) { 
$this->response->redirect($this->url->link('module/bespoke2')); 
} elseif (isset($this->request->post['submit2'])) { 
$this->data['input_width'] = ($this->request->post['size_width']); 
else{} 

Questo è il codice per il controller bespoke2.php

$this->data['input_width'] = ($this->request->post['size_width']); 

Il reindirizzamento sembra non prendere il posto di fronte? Qualsiasi aiuto molto apprezzato.

risposta

0

No, non penso che il reindirizzamento riporterà le variabili del modulo. Una soluzione rapida potrebbe essere quella di aggiungere manualmente la variabile nella stringa di query del reindirizzamento.

if (isset($this->request->post['submit1'])) { 
    $this->response->redirect($this->url->link('module/bespoke2?size_width=' . $this->request->post['size_width'])); 
} elseif (isset($this->request->post['submit2'])) { 
    $this->data['input_width'] = $this->request->post['size_width']; 
else { } 

allora si potrebbe recuperare in bespoke2.php come segue:

$this->data['input_width'] = $this->request->get['size_width']; 

Se non si pensi che sia particolarmente soddisfacente Mi piacerebbe guardare in distacco manualmente i dati tramite la tecnologia AJAX diretto alla corretta controller piuttosto che reindirizzare.

+0

L'unico problema, ed è un piccolo, è che ci sono un bel po 'di variabili da aggiungere a questo. Ne ho solo mostrato uno per semplificare l'esempio, quindi speravo di non doverlo fare manualmente. – Davetoff

+0

..... anche io sono riuscito a utilizzare il reindirizzamento usando un HEADER temp, tuttavia questo non sembra voler funzionare con Opencart. – Davetoff

+0

Bene, potreste usare un ciclo foreach per passare da '$ this-> request-> post' per creare la stringa di query, ma penso che la linea di fondo sia che state cercando di pubblicare condizionatamente un modulo su due URL diversi che non è t davvero come sono destinati a funzionare in modo che tutto ciò che fai sarà un po 'incisivo ... un'altra possibilità potrebbe essere quella di usare javascript o jquery per aggiornare l'attributo action del modulo prima di inviarlo in modo che venga inviato a un URL diverso a seconda del pulsante premuto. – jx12345

0

OpenCart utilizza i dati di sessione con reindirizzamenti come i messaggi di successo ad es. Questo potrebbe funzionare anche per la tua situazione.

$this->session->data['input_width'] = $this->request->post['size_width']; 
1

Supponendo di avere a disposizione jQuery (che si dovrebbe avere il valore predefinito è OpenCart installazione) è possibile utilizzare il seguente (aggiungerlo alla fine della vista) per aggiornare il 'url_to_submit_to' prima di inviarlo.

<script> 
    $("input[name=submit1]").click(function(event) { 
    event.preventDefault(); 
    $('form[name=frm]').attr('action', '/url_to_submit_to').submit(); 
    }); 
</script> 
+0

Ho aggiunto questo, ha inviato il post alla pagina successiva e ha funzionato a meraviglia . Grazie per l'aiuto. – Davetoff

+0

nessun problema, felice ha funzionato per voi. – jx12345

0

Aprire

/catalog/controller/account/register.php 

Change

$this->redirect($this->url->link('account/customregister', '', 'SSL')); 

Se po 'di tempo si dispone di passare con questo tipo

$this->response->redirect($this->url->link('product/product', 'product_id=50', '')); 
+0

Non sono del tutto sicuro di cosa intendi qui, vuoi che cambi i file di sistema da aggiungere nella nota "response->"? Se sì, cosa fa? – Davetoff