我想知道是否有人知道如何通过一种表格编辑编辑多条记录。此链接显示我正在寻找的确切内容:https://editor.datatables.net/examples/simple/multiRow.html。我已经创建了一个ajax调用,将我选择的记录的ID发送到我创建的editMultipleRecordsAction
方法。从那里我迷路了。任何提示都将非常感谢(Symfony已经有这样的东西了吗?我应该为此重建一个新的FormType吗?我应该使用相同的FormType,但添加侦听器吗?我应该创建一个新的实体,其中我的id属性将是一个数组? ...)。顺便说一下,我只有一个实体。如何一次编辑多条记录
0
A
回答
0
我认为最简单的方法来实现,这将是:
- 遍历
$request->request->get('data');
- 从DB
- 获取当前实体创建当前实体的新形式
- 手动调用
Form::submit()
为每种形式 $form->isValid()
验证(每次迭代)$em->flush()
循环后有理论计算设定的改变并保存到数据库
下面是一个未经测试的例子
public function editMultipleRecordsAction (Request $request)
{
// First we select what to do based on 'action' field (add/edit/delete)
switch ($request->request->get('action')) {
case 'edit':
// Fetch the payload
$data = $request->request->get('data');
// Fetch all edited entities
$entities = $this->getDoctrine()->getRepository('AppBundle:Entity')
->findBy(['id' => array_keys($data)]);
// Build a map of $id => $entity to use later
$map = [];
foreach ($entities as $entity) {
$map[$entity->getId()] = $entity;
}
if (array_keys($data) !== array_keys($map)) {
// Something went wrong, not all requested entities were fetched
}
// Loop over each edited entity
foreach ($data as $id => $form_data) {
// Create a form for the current entity (you can use createForm() as well, same thing)
$form = $this->createFormBuilder($map[$id])
// Notice that the id field is not part of the form
->add('name')
->add('position')
// ->add(...)
->getForm();
// Manually submit the data for this form
$form->submit($form_data);
if (!$form->isValid()) {
// Validation error, do something...
}
}
// Now we have iterated over each entity and updated it using Symfony's Form component
// The only thing remaining is to tell Doctrine to calculate the change set and save it to the database
$this->getDoctrine()->getManager()->flush();
// DataTables require that you return a JSON version of updated entities
// This will be different depending on what you use to serialize.
// The following example applies if you are using FOS Rest Bundle:
return $this->handleView($this->view(['data' => $entities]));
break;
case 'create':
// ...
break;
case 'remove':
// ...
break;
default:
throw new BadRequestHttpException();
}
}
相关问题
- 1. Rails一次编辑多条记录
- 2. CakePHP一次编辑多条记录
- 3. 编辑多条记录
- 4. 在asp.net中一次编辑多条记录mvc
- 5. 如何一次删除多条记录?
- 6. Rails的ActiveModel :: ForbiddenAttributesError编辑多条记录
- 7. 编辑多条记录 - asp.net mvc
- 8. 如何为多个用户一次选择多个记录进行编辑?
- 9. 防止数据网格编辑在ASP.NET中一次更新多条记录
- 10. Rails复杂的表单一次编辑多条记录与协会
- 11. Laravel一次保存多条记录
- 12. Django一次创建多条记录
- 13. 一次提交多条记录 - Laravel 5.2
- 14. 一次插入多条记录的MySQL
- 15. 一次插入多条记录 - sql
- 16. 添加记录编辑第一条记录
- 17. ColdFusion - 如何编辑记录?
- 18. Rails 3以单一格式编辑多条记录
- 19. 如何只编辑p:dataTable中的最后一条记录?
- 20. 另一个用户正在编辑记录时阻止编辑记录 - 如何?
- 21. 蟒蛇记录器记录同一条目多次
- 22. 如何一次将多条记录保存到数据库中
- 23. 如何在Ruby on Rails中一次更新多条记录?
- 24. SQL查询逻辑多条记录
- 25. 如何将多个记录数据连接成一条记录?
- 26. 查询多次显示每条记录
- 27. Rails 3.1 - 创建多条记录然后编辑
- 28. 编辑并保存cakephp中的多条记录
- 29. PHP:一次获取一条MySQL记录
- 30. 编辑CSV记录
忽略下面的相当愚蠢的答案,只是使用窗体集合:HTTP:// symfony.com/doc/current/form/form_collections.html – Cerad
也许你可以在你的问题中添加更多的细节?那么你有一个实体导致多个记录?似乎有点奇怪。你的多行链接确保它看起来像你在一个表单上有多个相同类型的实体。 – Cerad
@Mark:您可以在这里看到我是如何解决问题的:“Symfony 2.8:使用西班牙语创建和处理来自同一个实体的多个记录的表单”,链接:https://symfonyandme.com/2017/10/13/symfony-2-8-como-crear-y-procesar -un-formula-para-multiples-registros-de-una-misma-entidad/ –