2017-04-25 15 views
0

このチュートリアルでは、自分のエンティティにカスタムアクションを追加する方法について説明しました。カスタムアクションに確認モーダルを追加する

https://sonata-project.org/bundles/admin/3-x/doc/cookbook/recipe_custom_action.html

それは問題なく完璧に動作します。

しかし、今私はあなたがそれを実行するだけでなく、あなたがそれをしたいと確信しているかどうかを確認した後、最初にそのアクションに確認モーダルを追加したいと思います。

リンクをデータトグルにして、実際のアクションルートを削除するだけでした。モーダルのためのブートストラップdivクラスを追加し、ルート内にリンクを追加します。しかし今のところ、最初のエンティティのIDは、それぞれのIDではなく、すべてのエンティティで使用されます。

私はこの変更:これに

{% if admin.isGranted('EDIT', object) and admin.hasRoute('delOnt') %} 
    <a href="{{ admin.generateObjectUrl('delOnt', object) }}" 
     class="btn btn-sm btn-default edit_link"> 
     <i class="fa fa-trash" aria-hidden="true"></i> 
     {{ 'action_del_ont' | trans({}, "QiOpticksBundle") }} 
    </a> 
{% endif %} 

{% if admin.isGranted('EDIT', object) and admin.hasRoute('delOnt') %} 
    <a href="#" 
     class="btn btn-sm btn-default edit_link" 
     data-toggle="modal" 
     data-target="#deleteModal"> 
     <i class="fa fa-trash" aria-hidden="true"></i> 
     {{ 'action_del_ont' | trans({}, "QiOpticksBundle") }} 
    </a> 

    <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteLabel"> 
     <div class="modal-dialog" role="document"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
        <h4 class="modal-title" id="myModalLabel">Delete ONT</h4> 
       </div> 
       <div class="modal-body"> 
        Are you sure you want to delete this ONT? 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal"> 
         {{ 'no' | trans({}, "QiOpticksBundle") }} 
        </button> 
        <a href="{{ admin.generateObjectUrl('delOnt', object) }}" 
         class="btn btn-danger" 
         title="{{ 'action_del_ont'|trans({}, 'QiOpticksBundle') }}"> 
         {{ 'action_del_ont' | trans({}, "QiOpticksBundle") }} 
        </a> 
       </div> 
      </div> 
     </div> 
    </div> 
{% endif %} 

を、今すべてのエンティティのアクションは、第1のエンティティのIDの使用、およびない自分自身を作ります。

{{ admin.generateObjectUrl('delOnt', object) }}をこの{{ path('admin_qi_opticks_tl1ont_delOnt', {'id': object.id}) }}のような実際のルート名に置き換えようとしましたが、同じ問題が発生します。この問題を克服する方法はありますか?

答えて

0

問題を修正しました。これはちょっとばかげた間違いでした。

すべてのボタンのすべてのモーダルが正しいです。モーダル内のルートも正しいです。問題は、リンク内のすべてのIDが同じモーダルを参照して開くため、すべてのリンクが同じ - 最初のモーダルを開いたということでした。

は固有のモーダルを開くためにユニークでなければならないため、data-targetの値を"#deleteModal-{{ object.id }}"に変更しました。各リンクは正しいモーダルを探します。そして、あなたは各モーダルのIDで同じことを行います。 id="deleteModal-{{ object.id }}"

このように私のコードは次のようになります。

{% if admin.isGranted('EDIT', object) and admin.hasRoute('delOnt') %} 
    <a href="#" 
     class="btn btn-sm btn-default edit_link" 
     data-toggle="modal" 
     data-target="#deleteModal-{{ object.id }}"> 
     <i class="fa fa-trash" aria-hidden="true"></i> 
     {{ 'action_del_ont' | trans({}, "QiOpticksBundle") }} 
    </a> 
    <div class="modal fade" id="deleteModal-{{ object.id }}" tabindex="-1" role="dialog" aria-labelledby="deleteLabel"> 
     <div class="modal-dialog" role="document"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
        <h4 class="modal-title" id="myModalLabel">Delete ONT</h4> 
       </div> 
       <div class="modal-body"> 
        Are you sure you want to delete this ONT? 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal"> 
         {{ 'no' | trans({}, "QiOpticksBundle") }} 
        </button> 
        <a href="{{ admin.generateObjectUrl('delOnt', object) }}" 
         class="btn btn-danger" 
         title="{{ 'action_del_ont'|trans({}, 'QiOpticksBundle') }}"> 
         {{ 'action_del_ont' | trans({}, "QiOpticksBundle") }} 
        </a> 
       </div> 
      </div> 
     </div> 
    </div> 
{% endif %} 
関連する問題