Как при добавлении покупателя из админинистративного интерфейса указать системе, что адрес электропочты нуждается в подтверждении покупателем?

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
  • Тема закрыта
#1 Роман Цегинька
  • Группа: Заблокирован
  • Сообщений: 95
  • Регистрация: 01.08.2011

10.11.2011 13:00

Вы оказались правы в вопросе которое мы обсуждали вэтой теме, действительно шаблоны писем были перепутани, точнее в данном магазине этот шаблон был совершенно удален. Сейчас все исправил однако есть еще один нюанс. При создании нового клиента из админки он автоматисно становится активированным т.е. подтвержден. И письмо которое приходить по емейлу в целом не нужно, то есть, зачем активировать активного пользователя. Подскажите плиз, что нужно изменить в контроллере админки, чтобы по умолчанию поле базы is_active присваивалось 0. А то сейчас они все = 1.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

10.11.2011 13:32

Свойство is_active объекта "покупатель" не имеет отношения к факту подтверждения адреса электропочты покупателем.
Критерием подтверждения адреса электропочты покупателем является пустое значение свойства confirmation.

#3 Роман Цегинька
  • Группа: Заблокирован
  • Сообщений: 95
  • Регистрация: 01.08.2011

10.11.2011 13:35

Большое спасибо, а то я искал выход не в той стороне.

#4 Роман Цегинька
  • Группа: Заблокирован
  • Сообщений: 95
  • Регистрация: 01.08.2011

10.11.2011 13:52

Если я правильно вас понял то null является залогом пидтвверженого емейлу. А для того, чтобы по умолчанию он бив не подтвержденным достаточно установить в него что угодно?

#5 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

10.11.2011 13:58

Свойство confirmation объекта Покупатель хранит открытый ключ подтверждения адреса электропочты этого Покупателя.

#6 Роман Цегинька
  • Группа: Заблокирован
  • Сообщений: 95
  • Регистрация: 01.08.2011

10.11.2011 14:07

К сожалению с вашево ответа я ничего не понял. Ниже я излагаю функцию которая сохраняет и отправляет письмо в подтверждение. Если кто в курсе пидсакажыте плиз, что нужно изменить чтобы клиент был подтвержден после перехода по ссылке подтверждения.
 public function saveAction()
    {
        
       $session = $this->_getSession();
        if ($data = $this->getRequest()->getPost()) {
            $data = $this->_filterPostData($data);
            $redirectBack   = $this->getRequest()->getParam('back', false);
            $this->_initCustomer('customer_id');
            /** @var Mage_Customer_Model_Customer */
            $customer = Mage::registry('current_customer');
            // Prepare customer saving data
            if (isset($data['account'])) {
                if (isset($data['account']['email'])) {
                    $data['account']['email'] = trim($data['account']['email']);
                }
                $customer->addData($data['account']);
            }
            // unset template data
            if (isset($data['address']['_template_'])) {
                unset($data['address']['_template_']);
            }

            $modifiedAddresses = array();
$data = $this->_filterPostData($this->getRequest()->getPost());
            if (! empty($data['address'])) {
                foreach ($data['address'] as $index => $addressData) {
                    if (($address = $customer->getAddressItemById($index))) {
                        $addressId           = $index;
                        $modifiedAddresses[] = $index;
                    } else {
                        $address   = Mage::getModel('customer/address');
                        $addressId = null;
                        $customer->addAddress($address);
                    }

                    $address->setData($addressData)
                            ->setId($addressId)
                            ->setPostIndex($index); // We need set post_index for detect default addresses
                            
                }
            }
            
            // not modified customer addresses mark for delete
            foreach ($customer->getAddressesCollection() as $customerAddress) {
                if ($customerAddress->getId() && ! in_array($customerAddress->getId(), $modifiedAddresses)) {
                    $customerAddress->setData('_deleted', true);
                }
            }

            if(isset($data['subscription'])) {
                $customer->setIsSubscribed(true);
            } else {
                $customer->setIsSubscribed(false);
            }

            $isNewCustomer = !$customer->getId();
            try {
                if ($customer->getPassword() == 'auto') {
                    $sendPassToEmail = true;
                    $customer->setPassword($customer->generatePassword());
                }

                // force new customer active
                if ($isNewCustomer) {
                    $customer->setForceConfirmed(true);
                }

                Mage::dispatchEvent('adminhtml_customer_prepare_save',
                    array('customer' => $customer, 'request' => $this->getRequest())
                );

                $customer->save();
                        if ($customer->isConfirmationRequired()) {
                        $customer->sendNewAccountEmail('confirmation', $session->getBeforeAuthUrl() );
                        $session->addSuccess($this->__('Account confirmation is required. Please, check your email for the confirmation link. To resend the confirmation email please <a href="%s">click here</a>.', Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())));
                  
                       // $this->_redirectSuccess(Mage::getUrl('*/*/index', array('_secure'=>true)));
                     //   return;
                    }
                    else {
                        $session->setCustomerAsLoggedIn($customer);
                        $url = $this->_welcomeCustomer($customer);
                       // $this->_redirectSuccess($url);
//                        return;
                    }
  
              //   send welcome email
                //if ($customer->getWebsiteId() && ($customer->hasData('sendemail') || isset($sendPassToEmail))) {
//                    $storeId = $customer->getSendemailStoreId();
//                    if ($isNewCustomer) {
//                        $customer->sendNewAccountEmail('registered', '', $storeId);
//                    }
//                   ///  confirm not confirmed customer
//                    elseif ((!$customer->getConfirmation())) {
//                        $customer->sendNewAccountEmail('confirmed', '', $storeId);
//                    }
//                }

                 //TODO? Send confirmation link, if deactivating account

                if ($newPassword = $customer->getNewPassword()) {
                    if ($newPassword == 'auto') {
                        $newPassword = $customer->generatePassword();
                    }
                    $customer->changePassword($newPassword);
                    $customer->sendPasswordReminderEmail();
                }

                Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('The customer has been saved.'));
                Mage::dispatchEvent('adminhtml_customer_save_after',
                    array('customer' => $customer, 'request' => $this->getRequest())
                );

                if ($redirectBack) {
                    $this->_redirect('*/*/edit', array(
                        'id'    => $customer->getId(),
                        '_current'=>true
                    ));
                    return;
                }
            }
            catch (Exception $e){
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
                Mage::getSingleton('adminhtml/session')->setCustomerData($data);
                $this->getResponse()->setRedirect($this->getUrl('*/customer/edit', array('id'=>$customer->getId())));
                return;
            }
        }
        $this->getResponse()->setRedirect($this->getUrl('*/customer'));
    }


#7 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

10.11.2011 14:12

Данный форум не предназначен для бесплатного анализа программного кода.
Эта тема тоже закрыта.

Поделиться темой: