2011-04-08 79 views
0

我的客戶端使用Magento,點擊提交按鈕後,表單提交給控制器,然後重新加載相同的頁面。他問我的是他點擊提交按鈕,他想顯示一個彈出窗口。所以我用一個具有禁用背景的div作爲動態方式(JavaScript)的彈出窗口,但由於按鈕是「submitting」,頁面刷新並且我失去了彈出窗口,因此即使提交後也可以保持該div顯示?提交頁面後保持彈出狀態

+0

這是東西,可以通過AJAX提交?這將避免離開頁面並保存狀態。 – clockworkgeek 2011-04-08 22:02:43

回答

0

jQuery的例子:

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

謝謝你的回答,但我不想保留提交,直到我點擊彈出窗口,這不是一個確認彈出窗口,這是一個電子商務網站彈出窗口顯示客戶購買產品的詳細信息以及一些其他的鏈接頁面,我需要提交發生,以便將產品添加到購物車,並且我希望在提交後仍然保留彈出窗口,就像如果網站被禁用只是該彈出窗口是actif。 – Rad 2011-04-08 21:22:42

0

我不熟悉磁,但總體來講,可能不是你找一個表單提交的控制器時,頁面重新加載,並呼籲彈出,如果屬實?

+0

我希望我能找到控制器!我會立即刪除該重定向指令!我也沒有進入框架......而這個MVC很難遵循。我曾嘗試在會話上存儲值,然後當頁面重新加載時,我在會話中顯示帶有數據的DIV,但是我遇到了另一個問題,一些數據是客戶端,我無法將它們存儲到會話中,並且我無法將它們發佈爲告訴你,不想搗亂magento核心。這聽起來很複雜/愚蠢,但是我一直試圖做什麼或者我腦子裏有什麼是div在提交之前/之後顯示。 – Rad 2011-04-08 21:26:05

0

爲什麼不使用滑動面板而不是彈出面板?

例如,檢查的Magento的isLoggedin功能:滑動板內的客戶

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

如果客戶登錄,顯示必要的信息。

如果你想只是一個時間顯示此面板,嘗試的Magento的事件觀察方法:

應用程序/代碼/核心/法師/客戶/型號/ session.php文件

事件名稱:

  • customer_login
  • customer_session_init

對於JQ使用滑動面板,您可以使用支持showOnLoad屬性的jqEasy。

jqEasy

+0

客戶登錄後彈出窗口不顯示,但他點擊「添加產品」後顯示。它只是一個div在同一頁面內。其目的是顯示所購產品的詳細信息,名稱,價格和數量,以及一些鏈接。因此,一旦客戶點擊按鈕,形成光芒,並且由於控制器重定向到其他頁面,我失去了該彈出窗口。 – Rad 2011-04-09 14:58:46

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 
} 

這不是經過測試的代碼,但它應該爲您提供如何捕獲事件並在模板中對其進行響應的要點。希望有所幫助!

謝謝, 喬

相關問題