我在我的项目中使用 Symfony,我希望在数据附近有一个按钮,您可以在其中从数据库中删除条目。 我尝试使用树枝扩展,但感觉这不是正确的方法。 有什么想法吗?
HTML
<script>
function test() {
{{ deleteTicket() }};
}
</script>
{% for form in myForm %}
<h3>Task</h3>
{{ form.data.text }}
<h3>Priority</h3>
{{ form.data.dropdown }}
<button onclick="test()" class="btn btn-primary">delete</button>
{% endfor %}
树枝扩展
public function deleteTicket(DynamicRepository $formRepository)
{
$user = $this->getUser();
$myForm = $formRepository->findBy(['creator' => $user]);
$em = $this->getDoctrine()->getManager();
$em->remove($myForm);
$em->flush();
return $this->redirectToRoute('app_form_data');
}
首先检查symfony表单文档,您将看到如何正确创建表单,如何添加表单字段,渲染以及如何管理数据。
我建议你这样做:
1 - 使用您的输入创建表单类。
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('text', TextType::class)
->add('dropdown', DateType::class)
->add('delete', SubmitType::class)
;
}
}
2 - 渲染表单,这是您当前正在做的事情。
3 - 点击删除按钮后处理提交的数据。
public function delete(Request $request): Response
{
// just set up a fresh $task object (remove the example data)
$task = new Task();
$form = $this->createForm(TaskType::class, $task);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// $form->getData() holds the submitted values
// but, the original `$task` variable has also been updated
$task = $form->getData();
// your code to remove
$em = $this->getDoctrine()->getManager();
$em->remove($task);
$em->flush();
return $this->redirectToRoute('task_success');
}
return $this->render('task/new.html.twig', [
'form' => $form,
]);
}