У меня есть простая таблица с тремя столбцами с некоторыми (< 10) строками.Создайте форму Symfony/Twig Form с данными из базы данных
Таблица:
/**
* @ORM\Entity
* @ORM\Table(name="property_addition_cost_frequency")
*/
class PropertyAdditionCostFrequency
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/private $id;
/**
* @ORM\Column(type="string")
*/
private $label;
/**
* @ORM\Column(type="string")
*/
private $group;
/**
* @ORM\Column(type="string")
*/
private $active;
//all getters and setters
}
У меня есть рабочий код для показа 1 строку в предварительно заполненном виде.
AdminCoreDataController.php
/**
* @Route("/core_data/{id}", defaults={"id" = 1}, name="admin_core_data")
*/
public function showCoreDataListAction(Request $request, PropertyAdditionCostFrequency $propertyAdditionCostFrequency)
{
$form = $this->createForm(PropertyAdditionCostFrequencyForm::class, $propertyAdditionCostFrequency);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$propertyAdditionCostFrequency = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($propertyAdditionCostFrequency);
$em->flush();
$this->addFlash('success', 'successfully changed the data');
return $this->redirectToRoute('admin_property_list');
}
return $this->render('logged_in/content/admin/core_data/core_data.html.twig', [
'propertyCostFrequencyForm' => $form->createView()
]);
}
core_data.html.twig
{{ form_start(propertyCostFrequencyForm) }}
{{ form_widget(propertyCostFrequencyForm.label) }}
{{ form_widget(propertyCostFrequencyForm.active) }}
<button type="submit">send</button>
{{ form_end(propertyCostFrequencyForm) }}
PropertyAdditionCostFrequencyForm.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add( 'label')
->add( 'active')
;
}
Как я могу получить форму со всеми строками из таблицы, если нет «id» дается?
Начнем с формы коллекции: http://symfony.com/doc/current/form/form_collections.html – Cerad
Если я понимаю правильно, вы хотите изменить все PropertyAdditionCostFrequency в в то же время? или вы хотите иметь 10 форм, по одному для каждой строки? – goto
@goto да, я хочу редактировать все строки одновременно в одной форме – bob