自定义Symfony表单并获得对验证过程的更多控制


Customize Symfony forms and get more control over validation process

我使用doctrine:generate-admin为我的一个名为"Alumnos"的模型构建CRUD操作。我知道Symfony在/apps/site/modules/alumnos/views下生成视图,我正在尝试使用Twitter Bootstrap框架自定义输入字段。_form.php文件的代码如下:

<?php echo $form['nombres']->renderLabel() ?>
<?php echo $form['nombres']->renderError() ?>
<?php echo $form['nombres'] ?>

但是我想添加一个(*)到必需的字段,一个输入字段的类,并且还用适当的标记在<div>标记内包装错误。我怎样才能做到这一点?

另外(不知道是否为这部分打开一个新问题更好)我有六个字段,需要实现这一点:

  • 如果前三个字段(少说1,2,3)填充了值,则验证通过
  • 如果第二个三个字段(少说4,5,6)填充了验证通过的值
  • 至少需要前三个字段或后三个字段,因此在所有情况下1,2,3不能为空或4,5,6不能为空

我如何处理这个验证?

如果只有一种形式,你可以用一种简单的方式:用HTML替换<?php echo $form['nombres']->renderLabel() ?>,简单的^^

对于第二个问题,您需要表单中的post验证器来检查几个字段。下面是一个例子:http://symfony.com/legacy/doc/cookbook/1_2/en/conditional-validator

也许可以看看jobeet教程,如果有一个post验证器的例子

对于问题的第一部分,您应该查看页面底部的http://symfony.com/legacy/doc/more-with-symfony/1_4/en/06-Advanced-Forms,它们描述了如何创建新的WidgetFormSchemaFormatter。

对于第二部分,正如Francois所说,使用post验证器,或者自定义验证器。