Magento 1.4.2 - 不需要注册字段

时间:2011-02-11 15:11:53

标签: magento

我尝试了一种非常常用的方法,使注册过程中不需要电话字段,但它似乎不适用于Magento 1.4.2

我已经复制了

  

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

  

的magento /应用程序/代码/本地/法师/客户/型号/地址/ Abstract.php

并从该文件中的validate函数中删除了以下代码

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

}

我也删除了

class="input-text required-entry"
来自register.phtml文件的

,但我无法通过验证。我一直收到错误

  

“电话”是必需值。   “电话”长度必须等于或大于1个字符。

由于

3 个答案:

答案 0 :(得分:8)

默认电话属性在数据库中设置为必需。请参阅is_required表的eav_attribute列,搜索attribute_code = 'telephone'

或者,您只需运行一次此代码,例如使用安装脚本。

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

此外,您必须从模板checkout\onepage\billing.phtml

中的from中删除星号*

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

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

删除缓存以查看更改。

答案 1 :(得分:6)

有几个步骤(版本1.7.0.2)。

  1. 如上所述:更改数据库表eav_attributePhpmyadmin是一种简单的方法。

  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.phtmlapp/design/frontend/base/default/template/persistent个文件中的app/design/frontend/base/default/template/customer。< / p>

  4. 毫无疑问,Magento真的想把它作为必修课!

    应该这样做。

答案 2 :(得分:0)

我知道所有建议的复制和编辑核心文件的解决方案,但这将是升级自杀。

目前(Magento 1.9及更早版本)唯一不需要修改Magento核心文件的方法是为电话字段使用虚拟值。

一个简单的模型解决方案是添加到地址/ edit.phtml&#39;的底部。文件:

jQuery(function($){
    $('#form-validate').submit(function(){
        var telephone = $('#telephone');
        if( !telephone.val().length )
            telephone.val("<?= $this->__('Not supplied') ?>");
    });
});