2011-03-28 53 views
9

,当注册新客户时,我希望使字段“公司”成为必需。Magento - 为B2B Magento网站创建“公司”字段

我应该编辑哪个文件?

非常感谢。

+0

当你注册/手动创建的客户或客户注册自己?哪一个? – 2011-03-28 10:34:42

+0

在注册自己的客户,谢谢 – Bizboss 2011-03-28 11:35:59

+0

我甚至没有看到“公司”作为一个可选字段。那个配置在哪里? – 2016-09-21 18:10:23

回答

19

您还应该将其添加到服务器端的属性中。

如果您使用的Magento 企业公司版,你可以简单地编辑公司通过后端属性,将其设置为“必需的”

如果您使用的是社区版,那么您必须使用SQL手动更改此值。它在eav_attribute表中,attribute_codecompany,您只需将is_required设置为1即可。

+1

我想让“电话”不是必需的。我在eav_attribute中将is_required更改为0。前端仍然显示“必需”星号。所以我按照下面Oguz的回答编辑前端。现在表单POST,但POST的结果是“请输入电话号码”。我应该采取哪些进一步措施? – 2014-12-04 16:59:51

+0

我没有安装Magento,所以我不能真正帮忙,但是我的建议不会改变模板。您应该只能通过数据库进行更改。你确定你已经修改了正确的EAV属性吗?也许你已经改变了它的另一个实体... – haltabush 2014-12-15 10:07:06

+0

我实际上已经不得不重写表单控制器 - 那里有另一个测试电话的存在。 – 2015-01-07 16:40:58

5

对于客户地址簿科(注册的用户):

/app/design/frontend/base/default/template/customer/address/edit.phtml

对于结账开票部分:

/app/design/frontend/base/default/template/checkout/onepage/bi lling.phtml

对于检出航运部分:

/app/design/frontend/base/default/template/checkout/onepage/shipping.phtml

对于注册部分:

/app/design /前端/基/默认/模板/客户/表格/ register.phtml

/app/design/frontend/base/default/template/customer/form/address.phtml

查找看起来像下面这行对于必填字段:

class="input-text validate-email required-entry" 
+1

你知道你已经根据需要为前端设置了(硬编码!)字段,而不是后端? – Besnik 2013-08-30 09:49:15

+0

Besnik,这不是我的问题。我只是参考它在哪里。如果你有一个认真的开发者,你应该知道它是如何覆盖这个函数的。如果没有,你需要一个简单的解决方案。正如你可能猜到的那样,没有人喜欢你,特别是小网站所有者!此外,我用了很多次,并没有看到任何问题。当然,如果你不需要那些领域! – 2013-09-01 04:52:37

+3

虽然它有类似的效果,但这绝对不是这样做的方式。 – 2015-03-13 14:28:25

10

此外,以haltabush答案(这是正确的)这里是懒惰的开发者的SQL:

UPDATE eav_attribute SET is_required = 1 WHERE attribute_code = 'company'; 
+0

在我看来,这也是硬编码的方式,不是吗? – 2013-09-01 04:56:16

+0

没有。这正是企业版在后端编辑属性时所做的。但是你正在做的是修复它的前端,而不是后端......无论如何,黑客magento不是一个好主意。真。 – Besnik 2013-09-01 16:11:24

+0

这是为什么这个undervote?这是正确答案之一。如果不是最完整的。 – 2015-03-13 14:27:46

2

这就是如何使用安装程序来做到这一点。在magento中使用它的正确方法。这适用于企业版和社区版。但你必须将模块配置为了解sql文件夹下的文件

<?php 
    $installer = new Mage_Customer_Model_Entity_Setup('core_setup');; 

    $installer->startSetup(); 


    $installer->run("UPDATE eav_attribute SET is_required = 1 WHERE attribute_code = 'company';"); 


    $installer->endSetup(); 

这是我的模块xml文件的外观。

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <modules> 
     <Package_Customer> 
      <version>1.1.0.4</version> 
     </Package_Customer> 
    </modules> 
    <global> 
     .... 
     <resources> 
     <package_customer_setup> 
      <setup> 
       <module>Package_Customer</module> 
      </setup> 
     </package_customer_setup> 
     </resources> 
     .... 
    </global> 

这是我做的,以edit.phtml使其动态

<li class="wide"> 
     <?php 
      $validation_class = $this->helper('customer/address')->getAttributeValidationClass('company') ; 
      $required = strstr($validation_class, 'required-entry'); 
     ?> 
     <label for="company" class=<?php echo $required?"required":""?>><?php echo $this->__('Company') ?> <?php echo $required?"<em>*</em>":""?> </label> 
     <div class="input-box"> 
      <input type="text" name="company" id="company" title="<?php echo $this->__('Company') ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getCompany()) ?>" class="input-text <?php echo $validation_class ?>" /> 
     </div> 
    </li>