I am also facing same issue with onestepcheckout.Please check the shipping address information. "firstname" is required. Enter and try again. "lastname" is required. Enter and try again. "street" is required. Enter and try again. "city" is required. Enter and try again. "telephone" is required. Enter and try again. "regionId" is required. Enter and try again.
Can anyone help me to solve this issue.
Remove Postcode from Checkout
Beacuse the php validation return false, inside class Magento\Quote\Model\Quote\Address
you will find validate function
:
First create the di.xml
inisde you extension directly in folder etc YourVendor/YourExtName/etc/di.xml
and fill :
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Quote\Model\Quote\Address" type="YourVendor\YourExtName\Model\Quote\Address" />
</config>
Now create the class Address inside YourVendor/YourExtName/Model/Qoute/Adress
,php and push :
<?php
namespace YourVendor\YourExtName\Model\Quote;
class Address extends \Magento\Quote\Model\Quote\Address
{
/**
* Validate address attribute values
*
* @return bool|array
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
public function validate()
{
$errors = [];
if (!\Zend_Validate::is($this->getFirstname(), 'NotEmpty')) {
$errors[] = __('Please enter the first name.');
}
if (!\Zend_Validate::is($this->getLastname(), 'NotEmpty')) {
$errors[] = __('Please enter the last name.');
}
if (!\Zend_Validate::is($this->getStreetLine(1), 'NotEmpty')) {
$errors[] = __('Please enter the street.');
}
if (!\Zend_Validate::is($this->getCity(), 'NotEmpty')) {
//$errors[] = __('Please enter the city.');
}
if (!\Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
$errors[] = __('Please enter the phone number.');
}
$_havingOptionalZip = $this->_directoryData->getCountriesWithOptionalZip();
if (!in_array(
$this->getCountryId(),
$_havingOptionalZip
) && !\Zend_Validate::is(
$this->getPostcode(),
'NotEmpty'
)
) {
$errors[] = __('Please enter the zip/postal code.');
}
if (!\Zend_Validate::is($this->getCountryId(), 'NotEmpty')) {
$errors[] = __('Please enter the country.');
}
if ($this->getCountryModel()->getRegionCollection()->getSize() && !\Zend_Validate::is(
$this->getRegionId(),
'NotEmpty'
) && $this->_directoryData->isRegionRequired(
$this->getCountryId()
)
) {
$errors[] = __('Please enter the state/province.');
}
if (empty($errors) || $this->getShouldIgnoreValidation()) {
return true;
}
return $errors;
}
}
commented the code related to city field
if (!\Zend_Validate::is($this->getCity(), 'NotEmpty')) {
//$errors[] = __('Please enter the city.');
}
Update :-
Execute This Query in Database :-
SELECT * FROM `eav_attribute` WHERE `attribute_code` LIKE 'city' ORDER BY `attribute_id` DESC
And Check is_requred
is 0 or 1
If 1 Than Change And Try
Best Answer
Please check this file in your theme:
City Should be remove from there, if yes then please add below code:-
Then File should be look like this:-