LoginSignup
1
3

More than 5 years have passed since last update.

複数のボタンで同じモーダルを使い回す場合の実装例

Posted at

複数行出力させないといけないページで、それぞれの行にモーダル表示のボタンを配置したいが、モーダルのコードは1個にしたい時の実装例

EC-CUBEで規格・カテゴリ・配送方法などの一覧画面で項目削除ボタンにモーダルを配置したのでその時の実装が以下

{% block javascript %}
    <script>
        $(function() {
            // 削除モーダルのhref変更
            $('#delete_modal').on('shown.bs.modal', function(event) {
                var target = $(event.relatedTarget);
                $(this).find('[data-method="delete"]').attr('href', target.data('url'));
            });
        });
    </script>
{% endblock %}

{% block main %}

<!-- 省略 -->

<div>
    <ul>
        {% for Category in Categories %}
        <li>
            {% if Category.id != TargetCategory.id %}

            <!-- 項目の出力 -->

            <a class="btn btn-ec-actionIcon" data-toggle="modal" data-target="#delete_modal" data-url="{# ここに削除のためのURLを出力 #}">
                <i class="fa fa-close fa-lg text-secondary"></i>
            </a>
            {% endif %}
        </li>
        {% endfor %}
    </ul>
    <div class="modal fade" id="delete_modal" tabindex="-1" role="dialog" aria-labelledby="delete_modal" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">

                <!-- モーダルの内容の出力 -->

                <a href="#" class="btn btn-ec-delete" data-confirm="false" data-method="delete">
                    削除
                </a>
            </div>
        </div>
    </div>
</div>

<!-- 省略 -->

{% endblock %}

該当のプルリクはこちら

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3