我想在表格或请求中添加自定义数据-例如 author_id ,同时将我的帖子保存到数据库中。
我尝试通过使用以下方式做到这一点:
$request->request->set('author_id', '5');
$request->request->set('post.author_id', '5');
$request->request->set('post[author_id]', '5');
但是问题在于,当我dd($request)
时,我看到以下数据:
所以我应该以某种方式进入post数组,然后放入author_id。如何实现?
在laravel中,我会这样$request['post']['author_id'] = id;
我在控制器中的实际功能如下:
$post = new Post();
$form = $this->createForm(PostType::class, $post);
$form->handleRequest($request);
$request->request->set('author_id', '5');
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($post);
$entityManager->flush();
...
}
添加一些自定义数据的最佳方法是什么-在视图中不可见(例如,传递用户ID)到请求,或者直接显示到表单而不显示它(我不是在谈论display:none
属性)?
答案 0 :(得分:1)
该请求作为一种概念应被用作用户传递的值的只读包。
如果要处理数据以将其保存到数据库,则应在模型处理代码中进行处理
根据上面的评论,在确认并检查提交的表单后,您应该执行类似的操作
$post = $form->getData();
$post->setAuthor($authorId);
$post->setCreatedDate(Carbon::now());
$entityManager->persist($post);
$entityManager->flush();
您还可以将创建的日期设置直接移到实体构造函数中,以避免每次自己进行设置(不需要碳,显然可以将其传递为简单的数据时间)