繁体   English   中英

Symfony 实体类型

[英]Symfony EntityType

我尝试从我的表单 EntityType 中获取,它将从实体中获取名称和 ID。

->add('supplier', EntityType::class, [
    'class' => \App\Entity\Supplier::class,
    'choice_value' => 'id',
    'choice_label' => 'name',
])

我得到了预期的结果。

<select id="expense_supplier" name="expense[supplier]" class="form-control">
    <option value="1">PayPal</option>
    <option value="2">FB</option>
    <option value="3">Yotube</option>
</select>

他得到的值是 AS integer,作为实体要求,

但是当我提交表单时,出现错误:

预期参数类型为“整数”,给出了“App\Entity\Supplier”。

我的供应商实体:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class Supplier
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;
    /**
     * @ORM\Column(type="string", length=50)
     */
    private $name;
    /**
     * @ORM\Column(type="string", length=50)
     */
    private $tax_id;
    /**
     * @ORM\Column(type="integer", length=25)
     */
    private $category;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;

        return $this;
    }

    public function getTaxId(): ?string
    {
        return $this->tax_id;
    }

    public function setTaxId(string $tax_id): self
    {
        $this->tax_id = $tax_id;

        return $this;
    }

    public function getCategory(): ?int
    {
        return $this->category;
    }

    public function setCategory(int $category): self
    {
        $this->category = $category;

        return $this;
    }
}

我的Controller:

/**
 * @Route("/expense/add", name="expense_add")
 */
public function add(Request $request): Response
{
    $form = $this->createForm(\App\Form\ExpenseType::class);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($form->getData());
        $em->flush();
        return $this->redirectToRoute('expense_list');
    }
    return $this->render('Admin/SuppliersTemplate.html.twig', [
        'display' => 'form',
        'title' => 'add.expense',
        'form' => $form->createView()
    ]);
}

我尝试了很多方法,但没有任何帮助,

使用 Symfony 4.1

谢谢

看起来您没有指定与供应商属性的关系。

Expense Entity property supplier 更改为此

/**
 * @ManyToOne(targetEntity="Supplier")
 * @JoinColumn(name="supplier_id", referencedColumnName="id")
 */
private $supplier;

不要忘记更新架构


如果这不起作用,请共享您的费用实体

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM