異なる入力エンティティに対して私のフォームで使用する際に問題があります。symfony、異なる入力diffエンティティのフォーム使用方法
symfony 3.1。
私は、クライアントとその注文に関する情報を保存するためにフォームを実行するタスクを持っています。私はそのクライアントがクライアントのテーブルと順序ではなく、1つのフォームになることを望みます。それは注文エンティティにこの方法を検索するため
は、今私は... ...プロパティ「名前」も方法の一つどちらでエラーが発生している
/**
* Order
*
* @ORM\Table(name="order_work")
* @ORM\Entity(repositoryClass="AppBundle\Repository\OrderWorkRepository")
*/
class OrderWork
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Client", cascade={"persist"})
* @ORM\JoinColumn(name="client_id", referencedColumnName="id")
*/
private $client;
/**
* @var string
*
* @ORM\Column(name="orderNumber", type="string", length=255)
*/
private $orderNumber;
/**
* @var date
*
* @ORM\Column(name="date", type="string", length=255)
*/
private $date;
私はすべてのコードが表示されないんだけど、中エンティティ私はすべてのゲッターとセッターを持っています。また、それがあるべき形でのように、あなたは変数$クライアントとクライアントエンティティをマッピングしているあなたのOrderWorkエンティティで
/**
* Client
*
* @ORM\Table(name="client")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ClientRepository")
*/
class Client
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="surname", type="string", length=255)
*/
private $surname;
とコントローラで...
public function createAction(Request $request)
{
$em = $this->getDoctrine()->getEntityManager();
$prefixId = 1;
$date = date('Y-m-d');
$now = date('Y-m-d H:i:s');
$orderNumber = $this->generateOrderNumber($em, $prefixId, $date);
$orderType = $request->get('orderType');
$order = new OrderWork();
$order->setOrderNumber($orderNumber);
$order->setDate($date);
$order->setOrderDate($now);
$order->setreturnDate('');
$order->setOrderType($orderType);
$order->setStatus(1);
$form = $this->createFormBuilder($order)
->add('orderNumber', TextType::class, ['label' => 'Užsakymo numeris', 'attr' =>
['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px', 'disabled' => true]])
->add('date', HiddenType::class)
->add('orderDate', HiddenType::class)
->add('returnDate', HiddenType::class)
->add('name', EntityType::class, ['label' => 'Vardas', 'attr' => [
'style' => 'margin-bottom:15px; width:250px'],
'class' => 'AppBundle:Client'])
->add('device', TextType::class, ['label' => 'Prekė', 'attr' =>
['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px']])
->add('workPrice', NumberType::class, ['label' => 'Pristatyta kaina', 'attr' =>
['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px']])
->add('deadLine', TextType::class, ['label' => 'Numatomi terminai', 'attr' =>
['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px']])
->add('complect', TextType::class, ['label' => 'Komplektacija', 'required' => false, 'attr' =>
['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px']])
->add('description', TextType::class, ['label' => 'Gedimo aprašymas', 'required' => false, 'attr' =>
['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px']])
->add('screenPass', TextType::class, ['label' => 'Įrenginio ekrano užraktas/slaptažodis',
'required' => false, 'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px; width:250px']])
->add('surrogatephone', EntityType::class, ['label' => 'Pakaitinis telefonas',
'attr' => ['class' => 'form-control' ,'style' => 'margin-bottom:15px; width:250px'],
'class' => 'AppBundle:SurrogatePhone',
'query_builder' => function ($em) {
return $em->createQueryBuilder('s')
->orderBy('s.id', 'ASC');
},
'placeholder' => 'Pasirinkite',
'choice_label' => 'name',])
->add('save', SubmitType::class, ['label' => 'Sukurti', 'attr' =>
['class' => 'btn btn-primary', 'style' => 'margin-top:15px']]
)->getForm();
$form->handleRequest($request);
私の英語のため申し訳ありません:)
私はこのエラーをキャッチします。プロパティ "name"も "name()"、 "getname()"/"isname()"または "__call()"のいずれのメソッドも使用できません。 ) "が存在し、29行目のorders/new_order.html.twigに" Symfony \ Component \ Form \ FormView "クラスのパブリックアクセスがあります。 –
テンプレートform.name form.client.nameを試してみます。 –
form.nameまたはform.client.nameの代わりにform.clientを試してください –