重定向并在opencart中发布

时间:2015-03-23 12:49:37

标签: php html opencart

我正在为我的网站构建一个opencart模块,并有一个页面,我需要一个'刷新'按钮和一个'继续'按钮,在那里我自己POST(在'刷新'按钮的情况下或使用'continue'按钮来bespoke2.php。我已经在下面添加了控制器和视图。不幸的是,当单击继续按钮时,我被重定向到正确的页面,但POST变量没有随附。刷新按钮工作好吧。任何人都可以告诉我哪里可能出错了,我花了好几个小时玩它并搜索了论坛,谷歌还没有拿出太多的东西?

这是form.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?>" />

这是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{}

这是控制器bespoke2.php的代码

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

重定向似乎没有接过POST?任何帮助非常感谢。

4 个答案:

答案 0 :(得分:2)

假设您有jquery可用(您应该使用默认的opencart安装),您可以使用以下内容(将其添加到视图的末尾)以在提交之前更新'url_to_submit_to'。

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

答案 1 :(得分:0)

不,我不认为重定向会重新发布&#39;形式变量。快速修复可能是手动将变量添加到重定向的查询字符串中。

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 { }

然后你可以在bespoke2.php中检索它,如下所示:

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

如果您认为这不是特别令人满意,我会考虑通过ajax手动将数据直接发布到正确的控制器而不是重定向。

答案 2 :(得分:0)

OpenCart使用具有重定向的会话数据,例如成功消息。 这也可能适用于您的情况。

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

答案 3 :(得分:0)

打开

/catalog/controller/account/register.php

更改

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

如果您已经使用此类型传递

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