2016-02-03 39 views
1

即時通訊新手,以及我有兩個登錄表單1爲常規客戶和1爲客戶類型「批發」,所以我創建一個觀察員,我檢查,如果用戶(即試圖登錄)是批發客戶,它記錄出來它會像驗證後註銷客戶表單觀察員,並添加錯誤消息

class Hs_Login_Model_Observer { 

    public function validateCustomer($observer){ 
     $c= $observer->getCustomer(); 
     $customer = Mage::getModel('customer/customer')->load($c->getId()); 
     $customerType = Mage::getSingleton('customer/group')->load($c->getId())->getData('customer_group_code'); 


     if ($customerType == "Wholesale") { 
      Mage::getSingleton('customer/session')->logout(); 
     } 




    } 
} 

和它的作品,但我也想顯示在登錄頁面上的錯誤按摩,

我曾嘗試佈局手柄

$observer->getEvent()->getLayout()->getUpdate() 
      ->addHandle('cus_layout handle') 

我曾試圖通知

Mage::getSingleton(‘core/session’)->addError(‘Error message’); 

但似乎沒有任何工作b,需要幫助

+0

我看着辦吧,那種會在錯誤的方向 我重寫後AccountController的行動,也更新form.phtml文件,所以我可以找到哪個客戶正在從哪種形式登錄 –

回答

1

通知路徑是正確的。

唯一的問題是,鏈接到客戶帳戶的頁面不顯示core/session消息,而是顯示customer/session消息。

所以這應該工作:

Mage::getSingleton('customer/session') 
    ->addError(
     Mage::helper('customer') 
      ->__('An error occurred') 
    ); 
// also useful to remember to make messages translatable via an helper 
+0

你再次在客戶會話中添加錯誤,當我註銷客戶,會話與其按摩一起刪除,所以仍然有相同的問題 –

+0

處理消息的會話機制聖人與你有一個客戶登錄或不是這個事實沒有關係,所以這不是你問題的原因。當你定義了兩個表單將它們連接到正確的會話存儲以顯示消息時,實際上你可能會忘記一些東西。在這裏需要更多關於您正在使用的表單和控制器的上下文。 –

0

1特定的解決方案,我發現不使用觀測所有, 我只是想保持跟蹤,如果一個「批發商客戶」是默認登錄嚮往頁面然後磁應給予一定的誤差,

,所以我改寫AccountController.php

class Hs_Login_AccountController extends Mage_Customer_AccountController { 
     public function loginPostAction() { 
          . 
          . 
          . 
          . 
      if ($this->getRequest()->isPost()) { 
        $login = $this->getRequest()->getPost('login'); 
        $regularCustomer; 
        if ($login['form_type'] == "default") { 
         $customer = Mage::getModel("customer/customer"); 
         $customer->setWebsiteId(Mage::app()->getStore()->getWebsiteId()); 
         $customer->loadByEmail($login['username']); 
         $customerType = Mage::getSingleton('customer/group')->load($customer->getId())->getData('customer_group_code'); 

         if ($customerType == "Wholesale") { 
           $session->addError($this->__('invalid username and password')); 
           $this->_loginPostRedirect(); 
           return; 
          } 
          . 
          . 
          . 
          . 


        } 


       } 
     } 
    } 

這是通過配置馬格納完成要運行我的類控制這條路線

<frontend> 
     <routers> 
      <customer> 
       <args> 
        <modules> 
         <Hs_Login before="Mage_Customer">Hs_Login</Hs_Login> 
        </modules> 
       </args> 
      </customer> 
     </routers> 
    </frontend> 

,並在定期登錄頁面的表單中設置隱藏屬性

<li> 
    <div class="hidden"> 
     <input type="text" name="login[form_type]" value="default" /> 
    </div> 
</li>