【问题标题】:form_open in codeignitercodeigniter 中的 form_open
【发布时间】:2012-02-26 20:49:56
【问题描述】:

我有一个如下所示的网址:

http://localhost/store/mens/category/t-shirts/item/a-t-shirt

我有一个名为 store 的类,此时在我的应用程序中调用了 item 函数,并在页面上输出了一些关于产品的数据。

我需要允许用户将商品添加到购物篮。我知道 CI 提供了一个库来帮助解决这个问题,我已经构建了一个简单的类,它将与这个库交互以创建购物车功能。问题是我不明白我应该如何让表单提交到我的购物车类,然后返回到当前 url,所有参数都保持不变,就像上面一样。使用:

<?= form_open('cart/addItem',array('class' => 'basketForm')); ?>

提交到正确的课程,但之后我没有任何机制可以返回产品页面。

我能想到的唯一方法是将 url 发送到购物车类并在购物车完成后重定向......

有没有干净的方法来做到这一点?

【问题讨论】:

  • 你可以使用 ajax,这是一种更简洁的方法
  • 总的来说,我认为使用 AJAX 将产品添加到购物篮是最好的和最用户友好的方法。
  • AJAX 是一个优点,但没有它也可以工作。从标准 HTTP 操作开始,然后使用 AJAX 使其对用户更友好

标签: php codeigniter


【解决方案1】:

使用以下两种方法之一重定向到引荐来源网页:

1.仅在控制器中:

<?php
class Cart extends CI_Controller {
    public function addItem()
    {
        // ... add to cart here
        redirect($_SERVER['HTTP_REFERER']);
    }
}

2。从视图中,告诉控制器您希望它去哪里:

<!-- Form view //-->
<?= form_open('cart/addItem',array('class' => 'basketForm')); ?>
<?= form_hidden('next_URI', current_url()); // requires URL_helper ?>
...
<?= form_submit('', 'Add to Cart'); ?>
<?= form_close(); ?>


<?php
// Controller
class Cart extends CI_Controller {
    public function addItem()
    {
        // ... add to cart here
        redirect($this->input->post('next_URI'));
    }
}

【讨论】:

  • 谢谢。我认为这将是我需要使用的方法,但想确保没有更好的方法来实现它。
猜你喜欢
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2011-07-14
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多