验证Symfony2与数据库的查询

时间:2012-10-15 15:08:51

标签: forms validation symfony callback

我在symfony2中遇到验证表单的问题。

我有一个带有实体的表单。在'validation.yml'文件中我使用了CALLBACK:它调用文件'Entity.php'中的方法'isValidForm'

ALM\CreateReleaseBundle\Entity\createReleaseEntity:
    constraints:
        - Callback:
            methods: [isFormValid]

这是我的文件'Entity.php'

<?php
namespace ALM\CreateReleaseBundle\Entity;
use Symfony\Component\Validator\ExecutionContext;

class createReleaseEntity {
    protected $area;
    protected $relName;

    public function getArea() {
        return $this->area;
    }

    public function setArea($area) {
        $this->area = $area;
    }

    public function getRelName() {
        return $this->relName;
    }

    public function setRelName($relName) {
        $this->relName = $relName;
    }

    public function isFormValid(ExecutionContext $context) {
        // Validate Form
    }
}

现在在'isFormValid'中我想将函数getRelease插入到另一个控制器中。

public function getReleaseAction (Request $request) {
$area = $request->get('area');
    $relName = $request->get('relName');
    $ret = $this->getRelease($area,$relName);
    $session = $this->get('request')->getSession();
    $session->set("releaseObj", $ret);
    return new Response ();
}

有可能吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

在任何情况下都不应从模型访问Controller。

您想要执行哪种查询?

如果要通过relName检查Release是否在数据库中是唯一的,请在该字段上使用Doctrine的UniqueValidator。

希望有所帮助