Изменить положение добавленного поля формы в Symfony - PullRequest
2 голосов
/ 18 марта 2011

Я создал форму в Symfony 1.4 / Doctrine), сгенерированную из схемы, с которой я могу манипулировать метками полей, проверкой, модификацией виджетов для получения данных из БД и созданием нового поля, которого нет в схема.

Проблема в том, что форма генерируется переменной $ form, а новое поле, которое я создаю, находится внизу этого набора полей. Как мне вставить его где-нибудь в схеме сгенерированных полей.

Примечание. Все, что я хочу сделать, это иметь пароль и подтвердить пароль. Пароль явно присутствует в схеме, но Confirm Password - нет.

Ответы [ 3 ]

2 голосов
/ 03 февраля 2014

sfForm :: useFields () - это новая функция в symfony 1.3, которая позволяет разработчику точно указывать, какие поля должна использовать форма и в каком порядке они должны отображаться.Все остальные не скрытые поля удаляются из формы.

из Подробнее с формами Symfony 1.4

1 голос
/ 18 марта 2011

Вы можете внести любые изменения, отобразив каждое поле отдельно в вашем шаблоне или представлении. Например, если у вас есть поля user, password и verify_password, вы можете сделать:

//template or view
<?php echo $form['user']->renderRow()?><br/>
<?php echo $form['password']->renderRow()?><br/>
<?php echo $form['confirm_password']->renderRow()?>

если вы хотите сделать более сложные вещи, см. Пример формы Jobeet

0 голосов
/ 22 декабря 2015

Вы можете использовать setPositions из WidgetSchema для установки позиций всех ваших полей:

<?php

$this->getWidgetSchema()->setPositions(array(
    0 => 'field_one',
    1 => 'field_two',
    // etc...
));

Или вы можете "переместить" поле по форме с помощью moveField:

<?php

// Moving to top
$this->getWidgetSchema()->moveField('field_one', sfWidgetFormSchema::FIRST);
// Moving before 'field_two'
$this->getWidgetSchema()->moveField('field_three', sfWidgetFormSchema::BEFORE, 'field_two');

//    *  Available actions are:
//    *
//    *  sfWidgetFormSchema::BEFORE
//    *  sfWidgetFormSchema::AFTER
//    *  sfWidgetFormSchema::LAST
//    *  sfWidgetFormSchema::FIRST
...