symfony - Symfony:如何在编辑功能上检查控制器中的多种字符串类型
问题描述
我有 UserTasksController ,我想在表单中编辑时编辑多个字段。例如:如果 user1 在他的任务上有 status1 并且该状态用 status2 更改,我想更新"change_status_date"
and "change_status_by"
。我试图用布尔类型来做到这一点并且它有效,但我似乎无法在这里弄清楚。状态更改为 status2,但感兴趣的字段未更改(“change_status_date”和“change_status_by”)。我想对多个文件执行此操作,例如 priority 或 task category 。请帮忙。这是Controller中的编辑功能
public function edit(Request $request, $id): Response
{
$userTask = new UserTasks();
$userTask = $this->getDoctrine()->getRepository(UserTasks::class)->find($id);
$form = $this->createFormBuilder($userTask)
->add('name')
->add('description')
->add('completed', CheckboxType::class, [
'required' => false,
'label_attr' => ['class' => 'checkbox-custom ',
],
])
->add('active', CheckboxType::class, [
'required' => false,
'label_attr' => ['class' => 'checkbox-custom ',
],
])
->add('due_date', DateType::class, [
'widget' => 'choice',
])
->add('category', EntityType::class, [
'class' => TaskCategories::class
])
->add('task_type', EntityType::class, [
'class' => TaskTypes::class
])
->add('status', EntityType::class, [
'class' => TaskStatuses::class
])
->add('priority', EntityType::class, [
'class' => TaskPriority::class
])
->add('created_for', EntityType::class, [
'class' => Users::class
])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$userTask->setLastUpdateDate(new \DateTime());
$userTask->setLastUpdatedBy($this->getUser());
// active change
if ($userTask->getActive() == '0') {
$userTask->setDeleted('1');
$userTask->setVisible('0');
}
// completed changes
if ($userTask->getCompleted() == '0') {
$userTask->setDeleted('0');
$userTask->setVisible('1');
$userTask->setActive('1');
}
//status change
if( $userTask->getStatus() != $form->getData()->getStatus () ){
$userTask->setChangeStatusDate(new \DateTime());
$userTask->setChangeStatusBy($this->getUser());
}
$em = $this->getDoctrine()->getManager();
$em->persist($userTask);
$em->flush();
return $this->redirectToRoute('user_tasks_index');
}
解决方案
您的代码对我来说似乎没有问题。
您能否确认它//status change
可能带有回声进入 if 语句?如果从不输入 if 然后转储userTask->getStatus()
and$form->getData()->getStatus()
值,看看为什么会发生这种情况。
如果确实输入了,您可以转储$userTask
persist()之前的内容以确认不采用您插入它们的值吗?如果他们获取$userTask
对象中的值,那么您的数据库插入(flush() 方法)有问题,您应该查看错误日志以获取更多详细信息。
推荐阅读
- html - 角度错误 TS2531:对象可能为“空”
- javascript - 使用 IntersectionObserver 和 HTML 在 React 中延迟加载组件 tag issue?
I'm trying to write a component that unwraps content which is placed in a HTML
<template>
tag, using IntersectionObserver. Here's my code:- c++ - 如何将代码拆分为 main.cpp 头文件
- javascript - 我安装了 clsx 依赖项,但仍然收到错误“clsx”应该列在项目的依赖项中。运行'npm i -S clsx'
- testing - CSP 本地测试
- mysql - 将类型作为参数传递给用户定义的 mysql 函数
- c# - C# (.Net Framework) 中的 BlockingCollection 问题
- java - 已更新步骤执行数据时提交失败。恢复到旧版本。春季批次
- ruby-on-rails - 用于生成几何扩展对象的红宝石图案
- python - 客户端和服务器/Python之间的时钟同步