我已经在 Symfony 1.4/Doctrine 中创建了从模式生成的表单,我可以操作字段标签、验证、修改小部件以从数据库中获取数据,并且可以生成不在模式中的新文件。
问题是表单是由 $form 变量生成的,而我创建的新字段位于这组字段的底部。我如何将它插入到模式生成字段中的某个位置。
笔记 。我想要做的就是拥有密码和确认密码。密码在架构中,但确认密码不在。
我已经在 Symfony 1.4/Doctrine 中创建了从模式生成的表单,我可以操作字段标签、验证、修改小部件以从数据库中获取数据,并且可以生成不在模式中的新文件。
问题是表单是由 $form 变量生成的,而我创建的新字段位于这组字段的底部。我如何将它插入到模式生成字段中的某个位置。
笔记 。我想要做的就是拥有密码和确认密码。密码在架构中,但确认密码不在。
sfForm::useFields() 是 symfony 1.3 的一个新函数,它允许开发人员准确地指定表单应该使用哪些字段以及它们应该以什么顺序显示。所有其他非隐藏字段都将从表单中删除。
您可以通过在模板或视图中分别呈现每个字段来进行任何更改。例如,如果您有用户、密码和确认密码字段,您可以执行以下操作:
//template or view
<?php echo $form['user']->renderRow()?><br/>
<?php echo $form['password']->renderRow()?><br/>
<?php echo $form['confirm_password']->renderRow()?>
如果您想做更复杂的事情,请参阅Jobeet Form Example
您可以使用setPositions
fromWidgetSchema
来设置所有字段的位置:
<?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