我尝试了一种非常常用的方法,使注册过程中不需要电话字段,但它似乎不适用于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个字符。
由于
答案 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
从
改变(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)。
如上所述:更改数据库表eav_attribute
。 Phpmyadmin
是一种简单的方法。
评论这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
您还可以删除*
和register.phtml
文件夹的单页文件夹中billing.phtml
和app/design/frontend/base/default/template/persistent
个文件中的app/design/frontend/base/default/template/customer
。< / p>
毫无疑问,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') ?>");
});
});