首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发出Symfony 3.4“@ParamConverter注解找不到对象”

发出Symfony 3.4“@ParamConverter注解找不到对象”
EN

Stack Overflow用户
提问于 2018-03-23 23:15:12
回答 1查看 2.4K关注 0票数 0

在Symfony 3.4上,当我尝试删除表的选定项时,遇到了“@ParamConverter注解找不到对象”的问题。我认为当我尝试使用id ("findOneBy()")获取“壮观”时,这是一个问题。

这是我的代码(html.twig):

代码语言:javascript
复制
<form method="delete" action="{{ path('admin_spectacle_delete_selected') }}">
<button class="content-red btn btn-fabop" type="submit"><i class="fa fa-trash"></i> Tout supprimer</button>

<div class="table-responsive">
    <table id="myTable" class="table table-bordered table-hover table-striped">
        <thead>
            <tr>
                <th style="text-align:center;"><input type="checkbox" id="all"></th>
                <th>Nom</th>
                <th>Lieu</th>
                <th>Date spectacle</th>
                <th>Annee</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
        {% for spectacle in spectacles %}
            <tr>
                <td id="spectacle{{ spectacle.id }}"><input type="checkbox" name='multiSelected[]' value="{{ spectacle.id }}"></td>
                <td>{{ spectacle.nom }}</td>
                <td>{{ spectacle.lieu }}</td>
                <td>{{ spectacle.dateSpectacle }}</td>
                <td>{{ spectacle.annee }}</td>
                <td>
                    <a class="content-blue btn-fabop btn" href="{{ path('admin_spectacle_show', { 'id': spectacle.id }) }}"><i class="fa fa-search"></i> Détail</a>
                    <a class="content-purple btn-fabop btn" href="{{ path('admin_spectacle_edit', { 'id': spectacle.id }) }}"><i class="fa fa-pencil"></i> Edition</a>
                    <a class="content-red btn-fabop btn" href="{{ path('admin_spectacle_delete_confirmed', { 'id': spectacle.id }) }}"><i class="fa fa-trash"></i> Suppression</a>


                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
</div>

和控制器:

代码语言:javascript
复制
  /**
* Confirmation delete
*
* @Route("/deleteSelected", name="admin_spectacle_delete_selected")
*/
public function deleteSelectedAction(Request $request)
{

    $items_selected_id = $request->get('multiSelected');

      $em = $this->getDoctrine()->getManager();
      $repository = $em->getRepository(Spectacle::class);
      foreach($items_selected_id as $item_id) {

        $spectacle = $repository->findOneById($item_id);

        if (!$spectacle) {
            throw $this->createNotFoundException(
                'No spectacle found for id '.$spectacle
            );
        }
        else{
            $em->remove($spectacle);
        }
      }
      $em->flush();  
      return $this->redirectToRoute('admin_spectacle_index');
}

感谢您的回复!!

EN

回答 1

Stack Overflow用户

发布于 2018-03-23 23:25:09

问题就出自于此:

代码语言:javascript
复制
<form method="delete" action="admin_spectacle_delete_selected">

您通常会调用.../admin_spectacle_delete_selected,我想您一定有一个路由/spectacle/{id}

因此,您正在匹配另一个路由,该路由试图获得id为"admin_spectacle_delete_selected“的”壮观“。

您的表单应如下所示:

代码语言:javascript
复制
<form method="delete" action="{{ path('admin_spectacle_delete_selected') }}">

这将与您的deleteSelectedAction匹配

同样,你的Action应该看起来像这样

代码语言:javascript
复制
  $items_selected_id = $request->get('multiSelected');

  $em = $this->getDoctrine()->getManager();
  $repository = $em->getRepository(Spectacle::class)
  foreach($items_selected_id as $item_id) {

    $spectacle = $repository->findOneById($item_id);

    if (!$spectacle) {
        throw $this->createNotFoundException(
            'No spectacle found for id '.$spectacle
        );
    }
    else{
        $em->remove($spectacle);
    }
  }
  $em->flush();  
  return $this->redirectToRoute('admin_spectacle_index');

您正在重新声明您的EntityManager / Flushing循环,这对我来说没有多大意义:)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49452955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档