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