更改Symfony中添加的表单字段的位置

时间:2011-03-17 21:07:35

标签: symfony-1.4 symfony-forms

我在Symfony 1.4 / Doctrine中创建了表单,该表单是从模式生成的,我可以操作字段标签,验证,修改小部件以从数据库获取数据,并且可以生成不在架构。

问题是表单是由$ form变量生成的,我创建的新字段位于这组字段的底部。如何在架构生成的字段中的某处插入它。

注意。我想要做的就是拥有密码和确认密码。密码显然在架构中,但确认密码不是。

3 个答案:

答案 0 :(得分:2)

sfForm :: useFields()是symfony 1.3的一个新函数,它允许开发人员准确指定表单应该使用哪些字段以及应该以何种顺序显示它们。所有其他非隐藏字段都将从表单中删除。

More With Forms Symfony 1.4

答案 1 :(得分:1)

您可以通过在模板或视图中单独渲染每个字段来进行任何更改。例如,如果您有user,password和confirm_password字段,则可以执行以下操作:

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

如果你想做更复杂的事情,请参阅Jobeet Form Example

答案 2 :(得分:0)

您可以使用setPositions中的WidgetSchema来设置所有字段的位置:

<?php

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

或者你可以&#34;移动&#34;表单上的字段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