templates/admin/users.html.twig line 1

Open in your IDE?
  1. {% extends 'admin/base.html.twig' %}
  2. {% block title %}Пользователи{% endblock %}
  3. {% block heading %}Пользователи{% endblock %}
  4. {% block content %}
  5.   <div class="row">
  6.     <div class="col-12">
  7.       <div class="card">
  8.         <div class="card-body">
  9.           <div class="d-flex justify-content-between align-items-center flex-wrap gap-2 mb-3">
  10.             <form method="get" class="d-flex" action="{{ path('admin_users') }}">
  11.               <div class="position-relative topbar-search" style="width: 300px;">
  12.                 <input type="text" name="q" value="{{ filters.q }}" class="form-control ps-4" placeholder="Поиск..." />
  13.                 <i class="mdi mdi-magnify fs-16 position-absolute text-muted top-50 translate-middle-y ms-2"></i>
  14.               </div>
  15.               <button class="btn btn-primary ms-2">Искать</button>
  16.               {% if filters.q %}
  17.                 <a class="btn btn-light ms-2" href="{{ path('admin_users') }}">Сброс</a>
  18.               {% endif %}
  19.             </form>
  20.             {% if pagination.total_pages > 1 %}
  21.               <nav>
  22.                 <ul class="pagination mb-0">
  23.                   {% if pagination.page > 1 %}
  24.                     <li class="page-item"><a class="page-link" href="{{ path('admin_users', filters|merge({'page': pagination.page - 1})) }}">«</a></li>
  25.                   {% endif %}
  26.                   <li class="page-item active"><span class="page-link">{{ pagination.page }}</span></li>
  27.                   {% if pagination.page < pagination.total_pages %}
  28.                     <li class="page-item"><a class="page-link" href="{{ path('admin_users', filters|merge({'page': pagination.page + 1})) }}">»</a></li>
  29.                   {% endif %}
  30.                 </ul>
  31.               </nav>
  32.             {% endif %}
  33.           </div>
  34.           <div class="text-muted fs-13 mb-2">{{ pagination.from }}-{{ pagination.to }} из {{ pagination.total }}</div>
  35.           <div class="table-responsive">
  36.             <table class="table table-hover align-middle mb-0">
  37.               <thead>
  38.                 <tr>
  39.                   <th>ID</th>
  40.                   <th>Аватар</th>
  41.                   <th>Логин</th>
  42.                   <th>Email</th>
  43.                   <th>Баланс</th>
  44.                   <th>Рефералы</th>
  45.                   <th>Сессия</th>
  46.                   <th>IP</th>
  47.                   <th>Зарегистрирован</th>
  48.                   <th class="text-end">Действие</th>
  49.                 </tr>
  50.               </thead>
  51.               <tbody>
  52.                 {% for user in users %}
  53.                   <tr>
  54.                     <td>{{ user.id }}</td>
  55.                     <td><img src="{{ user.img_url }}" class="thumb-md rounded-circle avatar-border admin-user-avatar" alt="" /></td>
  56.                     <td>{{ user.login }}</td>
  57.                     <td>{{ user.email }}</td>
  58.                     <td><strong>{{ user.balance_label }}</strong></td>
  59.                     <td>
  60.                       <small>ref_id {{ user.ref_id }}</small><br />
  61.                       <small>{{ user.refs }} refs</small>
  62.                     </td>
  63.                     <td><span class="badge {{ user.has_session ? 'bg-success-subtle text-success' : 'bg-secondary-subtle text-secondary' }}">{{ user.has_session ? 'активна' : 'нет' }}</span></td>
  64.                     <td><small>{{ user.ip ?: 'нет' }}</small></td>
  65.                     <td><small>{{ user.created_at }}</small></td>
  66.                     <td class="text-end">
  67.                       <a href="{{ path('admin_user_edit', {'id': user.id}) }}" class="btn btn-sm bg-primary-subtle">
  68.                         Редактировать <i class="mdi mdi-pencil-outline fs-14 text-primary"></i>
  69.                       </a>
  70.                     </td>
  71.                   </tr>
  72.                 {% else %}
  73.                   <tr><td colspan="10" class="text-center text-muted py-4">Пользователей пока нет.</td></tr>
  74.                 {% endfor %}
  75.               </tbody>
  76.             </table>
  77.           </div>
  78.           {% if pagination.total_pages > 1 %}
  79.             <div class="d-flex justify-content-end align-items-center gap-2 mt-3">
  80.               {% if pagination.page > 1 %}
  81.                 <a class="btn btn-light" href="{{ path('admin_users', filters|merge({'page': pagination.page - 1})) }}">Назад</a>
  82.               {% endif %}
  83.               <span class="text-muted">Страница {{ pagination.page }} из {{ pagination.total_pages }}</span>
  84.               {% if pagination.page < pagination.total_pages %}
  85.                 <a class="btn btn-light" href="{{ path('admin_users', filters|merge({'page': pagination.page + 1})) }}">Дальше</a>
  86.               {% endif %}
  87.             </div>
  88.           {% endif %}
  89.         </div>
  90.       </div>
  91.     </div>
  92.   </div>
  93. {% endblock %}