Php 注册后重定向到签出问题-Magento

Php 注册后重定向到签出问题-Magento,php,magento,redirect,Php,Magento,Redirect,我有一个问题,我做了一个函数重定向我的客户到结帐页面注册后,如果他们有一个产品在购物车。但重定向后,签出页面中的账单地址没有填充数据,用户也没有登录 这是我的重定向功能: $item = Mage::helper('checkout/cart')->getSummaryCount(); if($item >0) { Mage::app()->getFrontController()->getResponse()->setRedir

我有一个问题,我做了一个函数重定向我的客户到结帐页面注册后,如果他们有一个产品在购物车。但重定向后,签出页面中的账单地址没有填充数据,用户也没有登录

这是我的重定向功能:

  $item = Mage::helper('checkout/cart')->getSummaryCount();
    if($item >0)
    {
        Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/onepage'));
        Mage::app()->getResponse()->sendResponse();
        exit;
    }
原始代码:

  public function customerLogin(Varien_Event_Observer $observer)
   {    
           if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister()){    
               $lasturl = Mage::getSingleton('core/session')->getLastUrl();
             if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false){
                 if (! preg_match("#customer/account/create#", $lasturl) && Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect')) {
    if(Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1){
            Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('onestepcheckout/index'));
            Mage::app()->getResponse()->sendResponse();
            exit;
         }
    else
        {
            Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
           Mage::app()->getResponse()->sendResponse();
            exit;
        }
                }
            }
         }
        Mage::getSingleton("core/session")->setRedirectregister(false);
         Mage::getSingleton('core/session')->setIsFromCart('0');
    Mage::getSingleton('core/session')->setIsFromCheckout('0');
   }






   /*method for SignUp Customerredirect*/
  public function customerRegistration(Varien_Event_Observer $observer)
   {
    Mage::getSingleton("core/session")->setRedirectregister(true);
        if (Mage::helper('customerredirect')->isEnabled() && Mage::helper('customerredirect')->isoptionEnabled('registration_customerredirect') ) {

               $_session = $this->_getSession();
               $_session->setBeforeAuthUrl(Mage::helper('customerredirect')->setRedirectOnSignup());
        }
   }
更新代码:

  public function customerLogin(Varien_Event_Observer $observer)
   {    
           if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister()){    
               $lasturl = Mage::getSingleton('core/session')->getLastUrl();
             if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false){
                 if (! preg_match("#customer/account/create#", $lasturl) && Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect')) {
    if(Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1){
            Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('onestepcheckout/index'));
            Mage::app()->getResponse()->sendResponse();
            exit;
         }
    else
        {
            Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
           Mage::app()->getResponse()->sendResponse();
            exit;
        }
                }
            }
         }
        Mage::getSingleton("core/session")->setRedirectregister(false);
         Mage::getSingleton('core/session')->setIsFromCart('0');
    Mage::getSingleton('core/session')->setIsFromCheckout('0');
   }






   /*method for SignUp Customerredirect*/
  public function customerRegistration(Varien_Event_Observer $observer)
   {
    Mage::getSingleton("core/session")->setRedirectregister(true);
        if (Mage::helper('customerredirect')->isEnabled() && Mage::helper('customerredirect')->isoptionEnabled('registration_customerredirect') ) {

               $_session = $this->_getSession();
               $_session->setBeforeAuthUrl(Mage::helper('customerredirect')->setRedirectOnSignup());
        }
   }
/app/code/community/Amit/Custommodule/etc/config.xml

 <?xml version="1.0" ?>
    <config>
        <modules>
            <Amit_Custommodule>
                <version>1.0.0</version>
            </Amit_Custommodule>
        </modules>
        <global>
            <models>
                <custommodule>
                    <class>Amit_Custommodule_Model</class>
                </custommodule>
            </models>
        </global>
        <frontend>
          <events>
              <customer_register_success>
            <observers>
              <notify_user>
                <class>custommodule/observer</class>
                <method>myredirection</method>
              </notify_user>
            </observers>
              </customer_register_success>     
            </events>
        </frontend>
    </config>

1.0.0
Amit_自定义模块_模型
自定义模块/观察员
我的重定向
/app/code/community/Amit/Custommodule/Model/Observer.php

 <?php
    class Amit_Custommodule_Model_Observer {
        public function myredirection(Varien_Event_Observer $observer) {
        $AccountController = $observer->getEvent()->getAccountController();

        $Customer = $observer->getEvent()->getCustomer();

         $response1 = Mage::app()->getResponse(); // observers have event args

            $url = 'http://magento.edreamag.com/';
            $response1->setRedirect($url);
            Mage::app()->getFrontController()->sendResponse();

        return;
      }
    }

我更喜欢这个解决方案

步骤1: 创建
config.xml
app/code/community/Amit/Custommodule/etc/
-有关详细信息,请参阅: 它的代码是什么

 <?xml version="1.0" ?>
    <config>
        <modules>
            <Amit_Custommodule>
                <version>1.0.0</version>
            </Amit_Custommodule>
        </modules>
        <global>
            <models>
                <custommodule>
                    <class>Amit_Custommodule_Model</class>
                </custommodule>
            </models>
        </global>
        <frontend>
          <events>
              <customer_register_success>
            <observers>
              <notify_user>
                <class>custommodule/observer</class>
                <method>myredirection</method>
              </notify_user>
            </observers>
              </customer_register_success>     
            </events>
        </frontend>
    </config>
在header.phtml rest中添加此代码,然后解释逻辑

    $currentUrl = Mage::getUrl('*/*/*', array('_current' => true));
if (strpos($currentUrl,'checkout/cart') == true || strpos($currentUrl,'checkout/onepage') == true) {
  $myValue ='yes'; 
  Mage::getSingleton('core/session')->setCurrpage($myValue);

} else {
  if (strpos($currentUrl,'customer/account/create') == true || strpos($currentUrl,'customer/account/create') == true) {

  }else {


  $myValue ='no'; 
  Mage::getSingleton('core/session')->setCurrpage($myValue); 
}}
仅更新此代码

class Amit_Custommodule_Model_Observer {
    public function myredirection(Varien_Event_Observer $observer) {
    $AccountController = $observer->getEvent()->getAccountController();

    $Customer = $observer->getEvent()->getCustomer();

     $response1 = Mage::app()->getResponse(); // observers have event args


        if(Mage::getSingleton('core/session')->getCurrpage()=='yes')
    {
           $url=Mage::getUrl('checkout/onepage');
     } else {
     $url=Mage::getUrl('customer/account');
    }
        $response1->setRedirect($url);
        Mage::app()->getFrontController()->sendResponse();

    return;
  }
}

您要添加此代码的是哪个文件?我有一个重定向扩展名。登录代码在哪里?我需要新注册用户使用此扩展名,登录名为work perfect,并且注册表位于永久文件夹中。请在这里查看更多信息,注册也来自扩展或使用默认magento?如何检查客户是否在购物车中重定向到收银台或我的帐户?你能适应我的工作条件吗?对于登录和注册?在
$item=Mage::helper('checkout/cart')->getSummaryCount()中添加此逻辑;如果($item>0){Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/onepage');Mage::app()->getResponse()->sendResponse();exit;}
位于
$url
位置,但逻辑不好,我需要检查用户是否访问了购物车,如果是,则在注册后重定向到结帐页面,否则重定向到My Account for Login第一个公共函数是work,因为最后一个Url是购物车,但是如果我在注册中添加相同的逻辑,则最后一个Url不是购物车是Login,因为要注册您将在其他页面请告诉我您理解这一点
 <?php
    class Amit_Custommodule_Model_Observer {
        public function myredirection(Varien_Event_Observer $observer) {
        $AccountController = $observer->getEvent()->getAccountController();

        $Customer = $observer->getEvent()->getCustomer();

         $response1 = Mage::app()->getResponse(); // observers have event args

            $url = 'http://www.example.com/';
            $response1->setRedirect($url);
            Mage::app()->getFrontController()->sendResponse();

        return;
      }
    }
$myValue ='yes'; Mage::getSingleton(‘core/session’)->setIsCart($myValue);


class Amit_Custommodule_Model_Observer {
            public function myredirection(Varien_Event_Observer $observer) {
            $AccountController = $observer->getEvent()->getAccountController();

            $Customer = $observer->getEvent()->getCustomer();

             $response1 = Mage::app()->getResponse(); // observers have event args

                $getSession =Mage::getSingleton('core/session')->getIsCart();
              if($getSession=='yes')
               {
                $url='you checkout ur';

                 }else { $url='account url'; }
                $response1->setRedirect($url);
              Mage::app()->getFrontController()->sendResponse();

            return;
          }
        }
    $currentUrl = Mage::getUrl('*/*/*', array('_current' => true));
if (strpos($currentUrl,'checkout/cart') == true || strpos($currentUrl,'checkout/onepage') == true) {
  $myValue ='yes'; 
  Mage::getSingleton('core/session')->setCurrpage($myValue);

} else {
  if (strpos($currentUrl,'customer/account/create') == true || strpos($currentUrl,'customer/account/create') == true) {

  }else {


  $myValue ='no'; 
  Mage::getSingleton('core/session')->setCurrpage($myValue); 
}}
class Amit_Custommodule_Model_Observer {
    public function myredirection(Varien_Event_Observer $observer) {
    $AccountController = $observer->getEvent()->getAccountController();

    $Customer = $observer->getEvent()->getCustomer();

     $response1 = Mage::app()->getResponse(); // observers have event args


        if(Mage::getSingleton('core/session')->getCurrpage()=='yes')
    {
           $url=Mage::getUrl('checkout/onepage');
     } else {
     $url=Mage::getUrl('customer/account');
    }
        $response1->setRedirect($url);
        Mage::app()->getFrontController()->sendResponse();

    return;
  }
}