How to make the second address field required during checkout?
-
12-12-2019 - |
Question
I have config set to display 2 lines for address during checkout (Configuration → Customer → Customer Configuration → Name and Address Options):
Number of lines in a street address
: 2
How can I make the second line a required field? Only the first field seems to be required. I've looked in the eav_attribute
table & can't seem to find it listed there.
Solution
If you plan to make the second field mandatory for the checkout, you should make it mandatory in the customer add/edit address form for consistency.
For the client side validation you need to edit each template that holds an address for and add required-entry
class on the second row.
Here are the templates I found for this:
- customer/form/address.phtml
- customer/address/edit.phtml
- persistent/customer/form/register.phtml
- customer/form/register.phtml
- checkout/onepage/billing.phtml
- checkout/onepage/shipping.phtml
- paypal/express/review/address.phtml
- persistent/checkout/onepage/billing.phtml
As for server side validation you need to copy the file
app/code/core/Mage/Customer/Model/Address.php
to the local folder /app/code/local/Mage/Customer/Model/Address.php
. You cannot extend this class because the class is never instantiated.
And you need to add something in the validate
method.
After this section:
if (!Zend_Validate::is($this->getStreet(1), 'NotEmpty')) {
$errors[] = Mage::helper('customer')->__('Please enter the street.');
}
Add the validation for the second row
if (!Zend_Validate::is($this->getStreet(2), 'NotEmpty')) {
$errors[] = Mage::helper('customer')->__('Please enter the correct street.');
}