【问题标题】:Symfony2 change validation group based on field valueSymfony2 根据字段值更改验证组
【发布时间】:2011-09-26 20:58:13
【问题描述】:

我有这样的控制器操作:

public function createAction()
{
    $entity  = new Client();

    $request = $this->getRequest();
    $form    = $this->createForm(new ClientType(), $entity);
    $form->bindRequest($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($entity);
        $em->flush();

        return $this->redirect($this->generateUrl('client_show', array('id' => $entity->getId())));

    }

    return array(
        'entity' => $entity,
        'form'   => $form->createView()
    );
}

底层Client 实体有一个字段type 现在可以取值[0, 1],我已经为Client 实体定义了两个验证组:personcompany

如何根据用户在type 字段中输入的值更改/选择验证组?

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

    您可以从docs 为您的类(客户端实体)添加回调验证约束:

    一些约束适用于正在验证的整个类。例如,Callback 约束是应用于类本身的通用约束。当该类被验证时,由该约束指定的方法会被简单地执行,以便每个方法都可以提供更多的自定义验证。

    【讨论】:

    • 我不确定我是否理解你,我经常使用回调验证器,但我看不出如何将它们与验证组“链接”,你能给我举个例子吗?跨度>
    • 手动:$errors = $validator->validate($client, array('registration'));,另一个选项我看看你是否可以为表单getDefaultOptions函数指定它,返回基于$client的适当注册组。
    • 是的,我认为验证组并不是真正为您的目的而设计的,也许有两个共享一个基类的实体类会更好。不知道;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2018-09-04
    • 1970-01-01
    • 2019-04-01
    相关资源
    最近更新 更多