为可以使用 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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...