如何解决为可以使用 Symfony Forms 更新其他实体的实体创建表单
我有以下实体名称 EntityUpdater
<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\EntityUpdater")
* @ORM\HasLifecycleCallbacks
*/
class EntityUpdater
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer",options={"unsigned"=true})
*/
private $id;
/**
* @ORM\Column(type="string",length=128)
*/
private $entityName;
/**
* @ORM\Column(type="integer",options={"unsigned"=true})
*/
private $entityId;
/**
* @ORM\Column(type="string",length=128)
*/
private $entityColumnName;
/**
* @ORM\Column(type="text",nullable=true)
*/
private $entityColumnValue;
/**
* @ORM\Column(type="integer",options={"unsigned"=true})
*/
private $status;
/**
* @var \DateTime
*
* @ORM\Column(name="scheduled_date",type="datetime",nullable=false,options={"default"="CURRENT_TIMESTAMP"})
*/
private $scheduledDate;
/**
* @var \DateTime
*
* @ORM\Column(name="creation_date",options={"default"="CURRENT_TIMESTAMP"})
*/
private $creationDate;
/**
* @var \DateTime
*
* @ORM\Column(name="processed_date",nullable=true)
*/
private $processedDate;
}
我正在使用此实体为其他实体创建计划更新。
例如,如果您想在下周一 0800 开始销售新产品,您可以创建一个新的实体更新器,通过“实体名称”选择“产品”作为目标实体,选择所需的产品,其列“状态”并设置它到新值。
我的问题是如何为这个实体创建一个用户友好的表单,该表单可以使用 Symfony5 更新任何其他实体。 我所说的“用户友好”是指:
- 对于
entityId
,能够使用<select>
标记列出所有实体,根据目标实体使用不同的列作为标签。 - 对于
entityColumnName
,能够使用<select>
标签列出该实体的所有列,每列带有正确的标签。 - 对于
entityColumnValue
,能够基于 Symfony Type 类显示正确的表单输入。
下面是“描述”产品表单的 ProductType 示例。当您选择产品作为 ProductType 表单时,我希望我的 EntityUpdater 表单以某种方式具有相同的列/标签/选择。
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('name',TextType::class,[
'label' => 'Name','required' => true
])
->add('status',ChoiceType::class,[
'label' => 'Product status','mapped' => true,'required' => true,'choices' => [
'Draft' => 0,'Discontinued' => 1,'Out of stock' => 2,'Online' => 3,]
]);
}
}
这能实现吗?如果是这样,如何?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。