带有外键关系的验证表格

时间:2019-03-26 11:21:43

标签: symfony symfony-forms symfony-validator

我的数据库架构是这样的:

create table users (
  id INT PRIMARY KEY,
  username TEXT,
)

create table posts (
  id INT PRIMARY KEY,
  user_id INT,
  title TEXT,
  content TEXT,
)

我正在开发api来创建“帖子”,所以我像下面这样发布,并且该关系已在“用户和帖子”实体中定义

{
   "user": {
        "username": "some_name"
   },
   "title": "testing",
   "content": "test content"
}

,我需要验证是否发布了正确的用户名?我该怎么办?

我的控制器是这样的

$post = new Post();
$form = $this->createForm(PostType::class, $post);
$form->submit($request->request->all());

我的构建器表单如下

$builder
    ->add('title', TextType::class)
    ->add('content', TextType::class)
    ->add('User', UserType::class, array(
        'data_class' => User::class
    ));

但是它每次尝试创建用户,而不是检查是否传递了有效的用户名。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

让我们假设您的名为 User 的User实体,在名为 App 的捆绑软件中,实体 User < / strong>在您的控制器中:

$user = $em->getRepository('AppBundle:User')->findBy(array('username' => $username)); // we suppose that you have already extract the value of username from the request into $username. 

然后您可以检查:

if($user instanceof User){
// do whatever you need here 
}