Symfony2根据选项更改表单行为

时间:2014-01-10 09:25:47

标签: php forms validation symfony

我有一个表格,我想用于和编辑,但想要相应地更改字段和验证。

我正在通过查看在控制器中运行createForm方法时传递的' name '选项来更改表单显示的内容。
在控制器中:

public function createAction(Request $request)
{
    $client = new Client();
    $form = $this->createForm('client', $client, array('name' => 'add'));

    $request = $this->getRequest();

    if ('POST' === $request->getMethod()) {
        $form->handleRequest($request);

        if ($form->isValid()) {
            $client->save();
        }
    }

    return $this->render('Bundle:client:clientAdd.html.twig', array(
        'form' => $form->createView(),
    ));
}

在ClientType中:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('id');

    if ('add' === $options['name']) {
        $builder->add('name');
    }

    if ('edit' === $options['name']) {
        $builder->add('age');
    }

    $builder->add('save', 'submit', array(
        'label' => 'Save'
    ));
}

验证(在我的validation.yml中定义)具有所有字段的规则,并且它将在不存在的添加模式中为字段引发错误。
如何才能使验证成为条件?

相关问题