Я создаю форму для входа пользователя в систему, чтобы изменить свой пароль, поэтому я создал подкласс существующей формы сброса пароля, который у меня есть. Формы будут идентичны, за исключением дополнительного поля для существующего пароля. До сих пор он работал, но я не могу понять, как вручную установить порядок в новом поле; единственное место, которое я получил, это конец формы. Похоже, что ZF2 требует от вас элементов формы add()
в том порядке, в котором вы хотите их визуализировать. Я бы сделал это, за исключением того, что конструктор формы подкласса должен иметь конструктор родительской формы, прежде чем он сможет добавить новые поля, и в этот момент родительская форма уже добавила свои поля.ZF2 Форма: порядок упорядочивания элементов
Я уже пробовал установить свойство order
моего нового поля, но это не сработало; Я пробовал несколько разных комбинаций (я не могу найти документацию для этой функции в любом месте, после многих поисков).
Подкласс конструктор сниппет:
class ChangePassword extends ResetPassword implements InputFilterProviderInterface {
public function __construct() {
parent::__construct();
$this->add(array(
'type' => 'Zend\Form\Element\Password',
'name' => 'existingPassword',
'order' => 0,
'options' => array(
'label' => 'Existing Password',
'order' => 0,
),
'attributes' => array(
'required' => 'required',
'order' => 0,
)
));
}
Родитель конструктор сниппет:
class ResetPassword extends Form implements InputFilterProviderInterface {
public function __construct() {
parent::__construct('reset-password');
$this->add(array(
'type' => 'Zend\Form\Element\Password',
'name' => 'password',
...
Спасибо, что сделал трюк! Мне пришлось изменить приоритет на что-то большее; Я отредактировал ваш ответ, чтобы это отразить. Если вы нашли это где-то в документах, пожалуйста, напишите ссылку, если вы не возражаете :) – AlexMA
Я на самом деле нашел это (ужасный ужас!), Читая код. Класс 'Form' расширяет класс' Fieldset' и метод 'add()' формы вызывает свой родительский метод.После этого и проверки метода вы найдете эти строки -> https://github.com/zendframework/zf2/blob/master/library/Zend/Form/Fieldset.php#L187-L189 – Crisp