Да, есть разница. Если элемент не требуется, он будет проверяться, даже если в данных, по которым вы проверяете, отсутствует полное значение. Значение проверяется только с зарегистрированными валидаторами после того, как определено, что оно существует. NotEmpty
Валидатор не будет работать, только если поле присутствует, но оно пустое.
Кроме того, нет необходимости добавлять валидатор NotEmpty самостоятельно, по умолчанию Zend автоматически вставляет валидатор NotEmpty для элементов, если элемент требуется. Таким образом, эффективное выполнение ->setRequired(true)
такое же, как выполнение ->setRequired(true)->addValidator('NotEmpty')
. Вы можете отключить это поведение с помощью ->setAutoInsertNotEmptyValidator(false)
.