6
votes

Rediriger et poster dans OpenCart

Je construis je construis un module OpenCart pour mon site et j'ai une page que j'ai besoin d'un bouton "Actualiser" pour et un bouton "Continuer", où je posterai lui-même (dans le cas du bouton "Actualiser" ou à bespoke2.php avec le bouton "Continuer". J'ai ajouté le contrôleur et les vues ci-dessous. Malheureusement, lorsque le bouton Continuer est cliqué, je me redirigeai de la bonne page, mais les variables de l'actualisation ne sont pas fournies. Le bouton de rafraîchissement fonctionne. Eh bien. Est-ce que quelqu'un peut-il me dire où je vais me tromper, j'ai passé des heures à jouer avec elle et avoir fouillé le forum et Google n'a pas grandi beaucoup?

Ceci est la form.php xxx

ceci est le contrôleur.php xxx

ceci est le code de contrôleur bevoke2.php xxx < / Pré>

La redirection semble ne pas prendre le post à travers? Toute aide beaucoup appréciée.


0 commentaires

4 Réponses :


0
votes

Non, je ne pense pas que la redirection «ré-postera» les variables de forme. Une solution rapide peut être d'ajouter manuellement la variable dans la chaîne de requête de la redirection. xxx

alors vous pourriez la récupérer dans bespoke2.php comme suit: xxx

Si vous ne pensez pas que c'est particulièrement satisfaisant que je voudrais Examinez-vous à afficher manuellement les données via AJAX directement au contrôleur correct plutôt que de rediriger.


4 commentaires

Le seul problème, et c'est un petit, est qu'il y a de nombreuses variables de poste à ajouter à cela. Je n'ai montré que celui qui simplifie l'exemple, alors j'espérais ne pas avoir à le faire manuellement.


..... aussi, j'ai réussi à poster à l'aide de redirection à l'aide d'une en-tête Temp, mais cela ne semble pas vouloir fonctionner par OpenCart.


Eh bien, vous pouvez utiliser une boucle foreach pour boucle via $ ceci-> Demande-> POST Pour construire la chaîne de requête, mais je pense que la ligne finale est que vous essayez de poster un formulaire de manière conditionnelle à deux URL qui n'est pas vraiment ce qu'ils sont destinés à travailler pour que tout ce que vous faites va être un peu un piratage ... Une autre possibilité pourrait être d'utiliser JavaScript ou JQuery pour mettre à jour l'attribut action du formulaire avant de le soumettre que cela soumet à une URL différente selon laquelle appuyez sur le bouton.


J'ai ajouté une nouvelle réponse pour montrer comment utiliser JQuery pour mettre à jour l'URL que le formulaire se soumet au point avant que la soumission n'a lieu



0
votes

OpenCart utilise des données de session avec des redirections telles que les messages de réussite, par exemple. Cela pourrait également travailler pour votre situation.

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


0 commentaires

2
votes

En supposant que vous ayez JQuery disponible (que vous devriez avoir avec une installation par défaut OpenCart), vous pouvez utiliser ce qui suit (Ajoutez-le à la fin de la vue) pour mettre à jour «URL_TO_SUBMIT_TO» avant de soumettre.

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


1 commentaires

J'ai ajouté cela dans cela, il a envoyé le message à la page suivante et cela a fonctionné un régal. Merci pour l'aide.



0
votes

Ouvrir

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


1 commentaires

Je ne suis pas totalement sûr de ce que vous voulez dire ici, voulez-vous que je modifie les fichiers système pour ajouter dans la note "Réponse->"? Si oui, qu'est-ce que cela fait?