symfony - 使用外键关系验证表单
问题描述
我的数据库架构是这样的:
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 和 Posts 实体中定义
{
"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
));
但是它每次都尝试创建用户,而不是检查是否通过了有效的用户名。有任何想法吗?
解决方案
假设您的 User 实体名为User,在名为App的包中,在您的控制器中的 Entity User中的属性名为 username :
$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
}
推荐阅读
- r - 如何根据 R 中的另一个数据框更新数据框中的新列
- google-cloud-storage - Gsutil 同步与 cp -n
- c++ - 如何旋转始终与圆形路径相切的对象?
- python - 图像的视觉内容完全相同,但像素值不同
- javascript - 创建用于将 useReducer 组合和使用到另一个组件中的高阶函数给我一个错误
- html - 如何设置 dl 和另一个 dl 的样式,使它们在同一行?
- reactjs - React - 上下文结构问题
- python - (Python 套接字)无法在 VM 和主机之间建立连接
- javascript - 如何在 React-Js 中添加依赖下拉列表
- python - y = np.random.normal(loc=np.random.randint(2),scale=1.2) 的概率密度函数 p(y) 是多少?