2013-04-18 5 views
0

Я пытаюсь сделать выпадающее меню группы на странице работы с регистрацией клиентов Magento. Я делал все следующие:Magento выпадающая группа группа регистрация клиента

Ввел следующий код в шаблон/постоянные/клиент/форма/register.phtml:

<label for="group_id" style='margin-top:15px;'><?php echo $this->__('Which group do you belong to? (select "Pet Owner" if you are uncertain)') ?><span class="required">*</span></label> 
      <div style='clear:both'><p style='color:red;'>Note: DVM/DACVO and Institution accounts require administrative approval.</p></div> 
      <div class="input-box" style='margin-bottom:10px;'> 
        <select style='border:1px solid gray;' name="group_id" id="group_id" title="<?php echo $this->__('Group') ?>" class="validate-group required-entry input-text" /> 
         <?php $groups = Mage::helper('customer')->getGroups()->toOptionArray(); ?> 
         <?php foreach($groups as $group){ ?> 
          <?php if ($group['label']=="Pet Owner" || $group['label']=="DVM/DACVO" || $group['label']=="Institution"){?> 
           <option value="<?php print $group['value'] ?>"><?php print $group['label'] ?></option> 
          <?php } ?> 
         <?php } ?> 
        </select> 
        </div> 

Тогда следующее в/приложение/код/​​местные/Mage/Клиент /controllers/AccountController.php в createPostAction():

$customer->setGroupId($this->getRequest()->getPost(‘group_id’)); 

Наконец следующее в /app/code/local/Mage/Customer/etc/config.xml, где был добавлен идентификатор группы:

<fieldsets> 
      <customer_account> 
       <prefix> 
        <create>1</create> 
        <update>1</update> 
        <name>1</name> 
       </prefix> 
       <firstname> 
        <create>1</create> 
        <update>1</update> 
        <name>1</name> 
       </firstname> 
       <middlename> 
        <create>1</create> 
        <update>1</update> 
        <name>1</name> 
       </middlename> 
       <lastname> 
        <create>1</create> 
        <update>1</update> 
        <name>1</name> 
       </lastname> 
       <suffix> 
        <create>1</create> 
        <update>1</update> 
        <name>1</name> 
       </suffix> 
       <email> 
        <create>1</create> 
        <update>1</update> 
       </email> 
       <password> 
        <create>1</create> 
       </password> 
       <confirmation> 
        <create>1</create> 
       </confirmation> 
       <dob> 
        <create>1</create> 
        <update>1</update> 
       </dob> 
       <group_id><create>1</create><update>1</update></group_id> 
       <taxvat> 
        <create>1</create> 
        <update>1</update> 
       </taxvat> 
       <gender> 
        <create>1</create> 
        <update>1</update> 
       </gender> 
      </customer_account> 

Я тестировал его несколько раз, и каждый клиент по-прежнему добавляется как группа клиентов по умолчанию. Вы видите, что я делаю неправильно?

+0

«group_id» имеет слова котировки –

+0

Если вы говорите о $ customer-> setGroupId ($ this-> getRequest() -> getPost ('group_id')); Я пробовал это без кавычек .... getPost (group_id)); и он все еще не работает :( – CaitlinHavener

+0

Нужны котировки, но они являются открытыми и закрытыми кавычками, которые вызовут проблемы. –

ответ

-1

Создайте свой собственный модуль с помощью /app/code/local/Mage/Customer/controllers/AccountController.php. Добавьте следующий код в свой файл congig.xml, если ваше имя модуля Custom и namespace Mymodule.

<global> 
    <fieldsets> 
     <customer_account> 
      <group_id><create>1</create><update>1</update></group_id> 
     </customer_account> 
    </fieldsets> 
</global> 
<frontend> 
<routers> 
<customer> 
    <args> 
     <modules> 
      <Mymodule_Custom before="Mage_Customer_AccountController">Mymodule_Custom</Mymodule_Custom> 
     </modules> 
    </args> 
    </customer> 
</routers> 

Это будет переопределить AccountController. Теперь найдите следующий код для контроллера.

<?php 

require_once(Mage::getModuleDir('controllers','Mage_Customer').DS.'AccountController.php'); 
class Mymodule_Custom_AccountController extends Mage_Customer_AccountController 
{ 
public function createPostAction() 
{ 
$session = $this->_getSession(); 
    if ($session->isLoggedIn()) { 
     $this->_redirect('*/*/'); 
     return; 
    } 
    $session->setEscapeMessages(true); // prevent XSS injection in user input 
    if (!$this->getRequest()->isPost()) { 
     $errUrl = $this->_getUrl('*/*/create', array('_secure' => true)); 
     $this->_redirectError($errUrl); 
     return; 
    } 

    $customer = $this->_getCustomer(); 

    try { 
     $errors = $this->_getCustomerErrors($customer); 

     if (empty($errors)) { 
      if($this->getRequest()->getPost('group_id')){ 
      $customer->setGroupId($this->getRequest()->getPost('group_id')); 
      } else { 
       $customer->getGroupId(); 
      } 
      $customer->cleanPasswordsValidationData(); 
      $customer->save(); 
      $this->_dispatchRegisterSuccess($customer); 
      $this->_successProcessRegistration($customer); 
      return; 
     } else { 
      $this->_addSessionError($errors); 
     } 
    } catch (Mage_Core_Exception $e) { 
     $session->setCustomerFormData($this->getRequest()->getPost()); 
     if ($e->getCode() === Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS) { 
      $url = $this->_getUrl('customer/account/forgotpassword'); 
      $message = $this->__('There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.', $url); 
      $session->setEscapeMessages(false); 
     } else { 
      $message = $e->getMessage(); 
     } 
     $session->addError($message); 
    } catch (Exception $e) { 
     $session->setCustomerFormData($this->getRequest()->getPost()) 
      ->addException($e, $this->__('Cannot save the customer.')); 
    } 
    $errUrl = $this->_getUrl('*/*/create', array('_secure' => true)); 
    $this->_redirectError($errUrl); 

} 

} 

?> 

Надеюсь, что это сработает для вас.

Смежные вопросы