Magento 1.4.2 - сделать поля регистрации не обязательными - PullRequest
3 голосов
/ 11 февраля 2011

Я попробовал очень часто используемый метод, чтобы сделать поле телефона не обязательным при регистрации, но, похоже, он не работает с Magento 1.4.2

Я сделал копию

magento / app / code / core / Mage / Customer / Model / Address / Abstract.php

до

magento / app / code /local / Mage / Customer / Model / Address / Abstract.php

и удалил следующий код из функции проверки в этом файле

if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
$errors[] = $helper->__('Please enter telephone.');

}

Я также удалил

class="input-text required-entry"

из файла register.phtml, но не могу пройти проверку.Я получаю сообщение об ошибке

"Телефон" является обязательным значением.Длина «Телефон» должна быть больше или равна 1 символу.

Спасибо

Ответы [ 3 ]

8 голосов
/ 11 февраля 2011

Телефонный атрибут по умолчанию установлен в базе данных как обязательный. См. is_required столбец таблицы eav_attribute, поиск по attribute_code = 'telephone'.

.

В качестве альтернативы вы можете запустить этот код только один раз, например, с помощью сценария установки.

$telephone = Mage::getModel('eav/entity_attribute')
           ->loadByCode('customer_address', 'telephone')
           ->setIsRequired(false)
           ->save();

Также вы должны удалить звездочку * из вашего шаблона checkout\onepage\billing.phtml

Изменение (строка ~ 120) с

<label for="billing:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>

до

<label for="billing:telephone"><?php echo $this->__('Telephone') ?></label>

Удалить кеш для просмотра изменений.

6 голосов
/ 01 ноября 2012

Есть несколько шагов (версия 1.7.0.2).

  1. Как упоминалось выше: изменить таблицу базы данных eav_attribute. Phpmyadmin - это простой способ сделать это.

  2. Закомментируйте эти 3 строки:

    if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
            $errors[] = Mage::helper('customer')->__('Please enter the telephone number.');
    }
    

    в файлах:

    • App/code/core/Mage/Customer/Model/Address/Abstract.php
    • includes/src/Mage_Customer_Model_Address_Abstract.php
    • includes/src/_checkout.php
  3. Вы также можете удалить * в файлах register.phtml и billing.phtml в одностраничных папках папок app/design/frontend/base/default/template/persistent и app/design/frontend/base/default/template/customer.

Не ошибитесь, Magento ДЕЙСТВИТЕЛЬНО хотел сделать это обязательной записью!

Это должно сделать это.

0 голосов
/ 11 ноября 2015

Мне известны все предлагаемые решения для копирования и редактирования core-файлов, но это будет самоубийство при обновлении.

На данный момент (Magento 1.9 и старше) единственный метод, который не требует модификации файлов ядра Magento, - это использование фиктивного значения для телефонного поля.

Простое решение для макета - добавить в конец файла 'address / edit.phtml':

jQuery(function($){
    $('#form-validate').submit(function(){
        var telephone = $('#telephone');
        if( !telephone.val().length )
            telephone.val("<?= $this->__('Not supplied') ?>");
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...