[英]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.