我的客户端正在使用Magento,单击提交按钮后,表单将提交给控制器,然后重新加载相同的页面。他问我的是,一旦他点击提交按钮,他就想要弹出一个弹出窗口。因此我使用带有禁用背景的div作为动态方式的弹出窗口(JavaScript),但由于按钮是“提交”,页面刷新并且我丢失了弹出窗口,因此即使在提交后也可以保持该div显示?
答案 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文件
活动名称:
对于jQuery Sliding Panel,您可以使用支持showOnLoad
属性的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
}
这不是经过测试的代码,但它应该为您提供如何捕获事件并在模板中对其进行响应的要点。希望有所帮助!
谢谢, 乔