I have followed a tutorial and created a custom customer attribute which I have added to the registration form from the file: persistent/customer/form/register.phtml
I have this code to process the new attribute:
<li>
<label for="job_title" class="required"><em>*</em><?php echo $this->__('Job Title') ?></label>
<div class="input-box">
<input type="text" name="job_title" id="job_title" value="<?php echo $this->escapeHtml($this->getFormData()->getJobTitle()) ?>" title="<?php echo $this->__('Job Title') ?>" class="input-text required-entry" />
</div>
</li>
This works fine and updates the attribute when the form is submitted. I am however trying to do the same on the onepage checkout registration form. I have edited the file: onepage/billing.phtml
and added the same code, however this breaks the checkout. I believe the error to be caused by this line:
<?php echo $this->escapeHtml($this->getFormData()->getJobTitle()) ?>
I am unsure how to check the right functions for this to work. I have looked at the sql file for the module which created the modules and checked that this attribute can be used in the relevant forms:
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$used_in_forms[]="checkout_register";
$used_in_forms[]="customer_account_create";
$used_in_forms[]="customer_account_edit";
$used_in_forms[]="adminhtml_checkout";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100);
$attribute->save();
How can I get this custom customer attribute to display on the onepage registration form? This is a Customer and not Customer Address attribute. Any help is much appreciated.
UPDATE
Below is the code which I have used in the module.
This is the script which is in the sql directory of the module (here there are other custom attributes which I created but this is the code for the "job_title" attribute:
$installer = $this;
$installer->startSetup();
$installer->addAttribute("customer", "job_title", array(
"type" => "varchar",
"backend" => "",
"label" => "Job Title",
"input" => "text",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => ""
));
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "job_title");
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$used_in_forms[]="checkout_register";
$used_in_forms[]="customer_account_create";
$used_in_forms[]="customer_account_edit";
$used_in_forms[]="adminhtml_checkout";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100);
$attribute->save();
The "Helper" directory has this code in a file called "Data.php":
<?php
class Mymodule_Customerattributes_Helper_Data extends Mage_Core_Helper_Abstract
{
}
The "config.xml" file has this:
<?xml version="1.0"?>
<config>
<modules>
<Mymodule_Customerattributes>
<version>0.1.0</version>
</Mymodule_Customerattributes>
</modules>
<global>
<helpers>
<customerattributes>
<class>Mymodule_Customerattributes_Helper</class>
</customerattributes>
</helpers>
<models>
<customerattributes>
<class>Mymodule_Customerattributes_Model</class>
<resourceModel>customerattributes_mysql4</resourceModel>
</customerattributes>
</models>
<resources>
<mymodule_customerattributes_setup>
<setup>
<module>Mymodule_Customerattributes</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mymodule_customerattributes_setup>
<mymodule_customerattributes_write>
<connection>
<use>core_write</use>
</connection>
</mymodule_customerattributes_write>
<mymodule_customerattributes_read>
<connection>
<use>core_read</use>
</connection>
</mymodule_customerattributes_read>
</resources>
</global>
</config>
Some names such as the module name has been changed as it contained my employer's company name. The structure is the same though.
Thank you.