Я пытаюсь иметь форму с набором форм, которые позволят мне заполнять еженедельные данные. У меня есть Сущность, которая на неделю с несколькими статистиками
/** * @ORM\Column(type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $week_id; /** * @ORM\Column(type="string") */ protected $area_worked; /** * @ORM\OneToMany(targetEntity="User") */ protected $approved_by; /** * @ORM\OneToMany(targetEntity="DailyStats") */ protected $daily_stats;
Тогда у меня есть суточная структура:
/** * @ORM\Column(type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $day_id; /** * @ORM\ManyToOne(targetEntity="WeeklyStats") */ protected $weekly_stat_id; /** * @ORM\Column(type="float") */ protected $hours_worked; /** * @ORM\Column(type="integer") */ protected $day_of_week;
Тогда с обеих этих я хочу форму, которую я могу вывести в таблицу, показывающую целую неделю:
Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday Hours | | | | | | |
Однако, когда я помещаю это в форму:
//weekly stats form public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('dailyReports', 'collection',array( 'type'=>new DailyStatsForm(), 'options' => array( 'required' => false ), 'allow_add' => true, )); }
это порождает форму с пустым набором полей. Я могу использовать javascript для добавления поля к нему, но я хочу знать, возможно ли его всегда генерировать 7 дней в форме для этой формы вместе с другими полями для недельных статистических данных?
Любые предложения по решениям будут высоко оценены.
Да, вы можете посмотреть документацию, если вы добавите семь объектов DailyStats в свой дочерний объект, тогда symfony2 отобразит те семь входов, которые вы хотите, проверьте http://symfony.com/doc/current/cookbook/form/form_collections. HTML
class TaskController extends Controller { public function newAction(Request $request) { $task = new Task(); // dummy code - this is here just so that the Task has some tags // otherwise, this isn't an interesting example $tag1 = new Tag(); $tag1->name = 'tag1'; $task->getTags()->add($tag1); // any new related entity you add represents a new embeded form $tag2 = new Tag(); $tag2->name = 'tag2'; $task->getTags()->add($tag2); // end dummy code $form = $this->createForm(new TaskType(), $task); $form->handleRequest($request); if ($form->isValid()) { // ... maybe do some form processing, like saving the Task and Tag objects } return $this->render('AcmeTaskBundle:Task:new.html.twig', array( 'form' => $form->createView(), )); } }