提交页面后保持弹出窗口

时间:2011-04-08 21:05:09

标签: magento popup

我的客户端正在使用Magento,单击提交按钮后,表单将提交给控制器,然后重新加载相同的页面。他问我的是,一旦他点击提交按钮,他就想要弹出一个弹出窗口。因此我使用带有禁用背景的div作为动态方式的弹出窗口(JavaScript),但由于按钮是“提交”,页面刷新并且我丢失了弹出窗口,因此即使在提交后也可以保持该div显示?

4 个答案:

答案 0 :(得分:0)

Jquery示例:

$(document).ready(function(){
    $('#form_selector').submit(function(){
        showDialog();
        //stop submit
        return false;
    });
    $('#dialog_button_selector').click(function(){
        //submit form
        $('#form_selector').submit();
    });
});

答案 1 :(得分:0)

我不熟悉Magneto,但一般来说,当页面重新加载并调用弹出窗口时,你不能在控制器中查找表单提交,如果是真的吗?

答案 2 :(得分:0)

为什么不使用滑动面板而不是弹出式面板?

例如,检查Magento的isLoggedin功能:

<?php
if ($this->helper('customer')->isLoggedIn() ) {
    echo "Welcome!";
} else {
    echo "Please log in.";
}
?>

如果客户已登录,请在幻灯片中显示客户的必要信息。

如果您只想一次显示此面板,请尝试使用magento的事件观察者方法:

应用程序/代码/核心/法师/客户/型号/ session.php文件

活动名称:

  • customer_login
  • customer_session_init

对于jQuery Sliding Panel,您可以使用支持showOnLoad属性的jqEasy。

jqEasy

答案 3 :(得分:0)

鉴于您不想保留页面的提交,您基本上需要在提交页面后回显弹出。因此,使用一些通用事件(catalog_product_add_to_cart_after),添加如下的会话变量:

public function observer($event) {
    Mage::getSingleton("customer/session")->setNeedsCartPopup(true);
}

然后,在您的模板中,您可以检查此变量是否存在以显示您的弹出窗口:

$session = Mage::getSingleton("customer/session");
if($session->getNeedsCartPopup()) {
    $session->->setNeedsCartPopup(false);
    // echo HTML to display popup as the page loads
}

这不是经过测试的代码,但它应该为您提供如何捕获事件并在模板中对其进行响应的要点。希望有所帮助!

谢谢, 乔