gpt4 book ai didi

codeigniter - HMVC 和动态小部件

转载 作者:行者123 更新时间:2023-12-04 02:45:04 25 4
gpt4 key购买 nike

背景

我使用小部件这个词作为一个局部 View ,它有自己的 Controller (所以它自己的 Action ),它几乎被放置在所有页面中。我通过 HMVC 实现了这个渲染,这很棒。

问题

现在,问题是小部件本身执行操作。想想一个购物车小部件。该小部件放置在所有页面中,因此用户可以一直看到他/她的东西。并且小部件具有与其相关的操作,例如:RemoveItem、RefreshCart、ApplyDiscountCoupon 等。此类操作应由按钮或链接触发,并且链接应类似于(在 HMVC 中):

<a href='<?site_url()?>/cart/cart/removeitem/the_item_id'>Remove this item</a>

行。现在用户点击该链接,购物车模块和购物车 Controller 已加载并执行操作,操作应如下所示:
function removeitem($itemid)
{
// remove the item from db
...

// "load the view" ???
}

如您所见,我的问题是如何在 HMVC 模块中加载 View 。问题是,如果我只加载购物车 View ,它只会显示我的购物车,我不能只重定向或加载主页,因为它可以是任何主页,即:购物车可以在任何主页(选择产品,继续购买,查看产品详细信息、账单信息、结帐等)。 :/

另一件事:一个要求是我不能在这个项目中使用 AJAX。

你知道 HMVC 是如何处理这个问题的吗?

提前致谢。

最佳答案

行。社区没有运气。尽管如此,我还是找到了解决方法。希望对某人有所帮助。

HMVC 对此没有自然的解决方案。所以我决定使用这个解决方法:

  • 进入每个主 Controller (即没有小部件,没有局部 View )我以这种方式在 session 中获取当前 url(/controllers/keep_buying.php):
    class Keep_buying extends Controller
    {
    function Keep_buying()
    {
    parent::Controller();
    $this->session->set_userdata('main_uri', uri_string());
    }
    ...
    }
  • 然后在我的部分 View 小部件(HMVC 模块 View )中,我有一个正常链接到我的小部件 Controller (/modules/cart/views/cart_show.php):
    <a class="button" href="cart/cart/additem">Add Item</a>  
  • 在 Controller 操作(HMVC 模块 Controller 操作)中,我检索当前主页,执行操作,然后重定向到该页面,这会隐式进入我的小部件流程(由于 HMVC)。
    class Cart extends Controller
    {
    ...
    function additem()
    {
    $to_redirect = $this->session->userdata('main_uri');
    // add-item work stuff...
    redirect($to_redirect);
    }
    }

  • 那是。恕我直言,这不是理想的方法,但有效。

    关于codeigniter - HMVC 和动态小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602061/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com