Я использую ZF2 Fieldset для некоторых элементов формы.
Но проблема, с которой я сталкиваюсь, заключается в том, что в моем файле fieldset есть элемент типа Email. Когда этот элемент остается пустым, возвращается сообщение об ошибке, но не переведенное. Вместо этого он возвращает необработанное сообщение.
SampleForm.php
use Zend\Form\Form;
use Zend\I18n\Translator\TranslatorAwareInterface;
use Zend\I18n\Translator\TranslatorAwareTrait;
use Zend\InputFilter\InputFilterAwareInterface;
use Zend\InputFilter\InputFilterAwareTrait;
use SampleFieldset;
class SampleForm extends Form implements
InputFilterAwareInterface,
TranslatorAwareInterface
{
use TranslatorAwareTrait;
use InputFilterAwareTrait;
/**
* Prepare form elements
* @param SampleFieldset $sampleFieldset
*/
public function __construct(
SampleFieldset $sampleFieldset,
) {
parent::__construct('sampleform');
$this->add(
array(
'attributes' => array(
'type' => 'textarea',
'id' => 'comments'
),
'name' => 'comments',
'options' => array(
'label' => 'Comments',
),
)
);
$this->add($sampleFieldset);
$this->add(
[
'name' => 'submit',
'type' => 'Submit',
'options' => [
'label' => 'Submit',
],
]
);
}
}
SampleFormFactory.php
use SampleForm;
use SampleFieldset;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\MutableCreationOptionsInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class SampleFormFactory implements FactoryInterface, MutableCreationOptionsInterface
{
/** @var array */
protected $options = [];
/**
* {@inheritDoc}
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$rootLocator = $serviceLocator->getServiceLocator();
$form = new SampleForm(
$serviceLocator->get(SampleFieldset::class),
);
return $form;
}
/**
* {@inheritDoc}
*/
public function setCreationOptions(array $options)
{
$this->options = $options;
}
}
SampleFieldset.php
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterAwareInterface;
use Zend\InputFilter\InputFilterAwareTrait;
use Zend\Validator\Hostname;
class SampleFieldset extends Fieldset implements InputFilterAwareInterface
{
use InputFilterAwareTrait;
/**
* Constructor
*/
public function __construct()
{
parent::__construct('sample');
$this->add(
[
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'attributes' => [
'type' => 'email',
'id' => 'email'
],
'options' => [
'label' => 'Email address',
'label_attributes' => [
'data-required' => 'true',
'class' => 'label_med',
],
],
]
);
}
}
Теперь при отправке формы, так как поле электронной почты оставлено пустым, NotEmpty
проверено и возвращено сообщение Значение является обязательным и не может быть пустым. Я хочу, чтобы эти сообщения были возвращены в форме перевода.
Примечание. Если я оставлю элемент комментария пустым и отправлю сообщение, возвращаемое сообщение об ошибке будет правильно переведено. Но это не относится к элементу электронной почты.
Задача ещё не решена.
Других решений пока нет …