Итак, я пытаюсь создать входной массив для своей формы, но не нашел для этого никаких ресурсов в документации (я мог что-то пропустить, поэтому ссылка, если это так).
Вкратце, я хотел бы сделать что-то вроде этого:
<select name = "my-select" id = "some-select">
<option value = "a">A</option>
<option value = "b">B</option>
<option value = "c">C</option>
</select>
<button type = "button" class = "btn btn-primary" id = "add-new-option">
Add Another Option
</button>
поэтому идея состоит в том, что пользователь может выбрать вариант A, нажать кнопку, чтобы добавить вариант C, а также A к объекту.
Результаты опций сохраняются в такой таблице:
entity_id option_value
1 A
1 C
2 B
2 A
Я думал сделать это так:
foreach ($arrayInput as $key => $value)
{
$option = new Option();
$option->setEntityId($entity->getId());
$option->setOptionValue($value);
}
в контроллере.
Но у меня ужасное чувство, что уже есть способ сделать это, я просто не смог его найти. В противном случае мне придется использовать HTML в своих шаблонах веточек, и я пытаюсь сократить это количество ..
Так является ли описанный выше метод лучшим способом добиться того, чего я хочу?
Моя текущая сущность:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass = "App\Repository\PageRepository")
*/
class Page
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type = "integer")
*/
private $id;
/**
* @ORM\Column(type = "string", length=125)
*/
private $title;
/**
* @ORM\Column(type = "text")
*/
private $content;
/**
* @ORM\Column(type = "boolean")
*/
private $approved;
/**
* @ORM\Column(type = "datetime")
*/
private $created_ts;
/**
* @ORM\Column(type = "datetime", nullable=true)
*/
private $last_edit_ts;
/**
* @ORM\Column(type = "integer")
*/
private $author_id;
/**
* @ORM\ManyToOne(targetEntity = "App\Entity\Tag")
*/
private $tag;
public function getTag(): ?Tag
{
return $this->tag;
}
public function getId()
{
return $this->id;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getContent(): ?string
{
return $this->content;
}
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
public function getApproved(): ?bool
{
return $this->approved;
}
public function setApproved(bool $approved): self
{
$this->approved = $approved;
return $this;
}
public function getCreatedTs(): ?\DateTimeInterface
{
return $this->created_ts;
}
public function setCreatedTs(\DateTimeInterface $created_ts): self
{
$this->created_ts = $created_ts;
return $this;
}
public function getLastEditTs(): ?\DateTimeInterface
{
return $this->last_edit_ts;
}
public function setLastEditTs(?\DateTimeInterface $last_edit_ts): self
{
$this->last_edit_ts = $last_edit_ts;
return $this;
}
public function getAuthorId(): ?int
{
return $this->author_id;
}
public function setAuthorId(int $author_id): self
{
$this->author_id = $author_id;
return $this;
}
}
Спасибо
@emix правда? У них есть EntityType - разве это не противоречило бы интуиции, если бы они не хотели смешивать сущности с формами? И я создал класс с make:entity, и для меня поле базы данных должно быть snake_case, а не camelCase
1) У них есть EntityType, поэтому менее техничные люди могут быстрее создавать прототипы, я не хочу обсуждать это дальше. Тот факт, что существует шаблон Singleton, не означает, что вы должны его использовать 2) Конечно, свойства базы данных, но не свойства сущности
@emix 1) вполне справедливо, у Magento есть похожие методы, но их следует избегать. 2) но я использовал make:entity, поэтому он автоматически генерирует свойства моего класса из свойств базы данных.




Вы можете использовать ChoiceType (для строк) или Тип объекта (для сущностей) с 'multiple' => true.
эта половина работает, но как мне затем использовать массив результатов для публикации в другую таблицу из объекта?
Мне нужна дополнительная информация, чтобы помочь вам. Можете ли вы опубликовать свою сущность?
Лучший способ - не смешивать формы с сущностями. Кстати, есть какая-то конкретная причина для использования нотации змеиного регистра для свойств сущности?