fix: show create user errors inside dialog, pre-fill form on error
Used novalidate + server-side validation so errors appear in the dialog rather than as browser-native popups. Form fields retain submitted values. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,33 +15,38 @@
|
||||
<button aria-label="Закрыть" rel="prev" onclick="document.getElementById('create-user-dialog').close()"></button>
|
||||
<h3>Создать пользователя</h3>
|
||||
</header>
|
||||
<form method="post" action="/admin/users/create">
|
||||
{% if create_errors %}
|
||||
<div role="alert" class="alert alert-danger mb-3">
|
||||
{% for e in create_errors %}<p>{{ e }}</p>{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<form method="post" action="/admin/users/create" novalidate>
|
||||
<div class="row gap-2 mb-2">
|
||||
<div class="col">
|
||||
<label for="cu_first_name">Имя
|
||||
<input type="text" id="cu_first_name" name="first_name" required>
|
||||
<input type="text" id="cu_first_name" name="first_name" value="{{ create_form.first_name if create_form else '' }}" required>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col">
|
||||
<label for="cu_last_name">Фамилия
|
||||
<input type="text" id="cu_last_name" name="last_name">
|
||||
<input type="text" id="cu_last_name" name="last_name" value="{{ create_form.last_name if create_form else '' }}">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<label for="cu_email">Email
|
||||
<input type="email" id="cu_email" name="email" required>
|
||||
<input type="text" id="cu_email" name="email" value="{{ create_form.email if create_form else '' }}" required>
|
||||
</label>
|
||||
<label for="cu_phone">Телефон
|
||||
<input type="tel" id="cu_phone" name="phone" placeholder="+7 (999) 999-99-99">
|
||||
<input type="tel" id="cu_phone" name="phone" value="{{ create_form.phone if create_form else '' }}" placeholder="+7 (999) 999-99-99">
|
||||
</label>
|
||||
<label for="cu_password">Пароль
|
||||
<input type="password" id="cu_password" name="password" minlength="8" required>
|
||||
<input type="password" id="cu_password" name="password" required>
|
||||
</label>
|
||||
{% if user.role == 'system' %}
|
||||
<label for="cu_role">Роль
|
||||
<select id="cu_role" name="role">
|
||||
<option value="user" selected>Пользователь</option>
|
||||
<option value="admin">Администратор</option>
|
||||
<option value="user" {% if not create_form or create_form.role == 'user' %}selected{% endif %}>Пользователь</option>
|
||||
<option value="admin" {% if create_form and create_form.role == 'admin' %}selected{% endif %}>Администратор</option>
|
||||
</select>
|
||||
</label>
|
||||
{% endif %}
|
||||
@@ -54,9 +59,6 @@
|
||||
</dialog>
|
||||
|
||||
{% if create_errors %}
|
||||
<div role="alert" class="alert alert-danger mb-3">
|
||||
{% for e in create_errors %}<p>{{ e }}</p>{% endfor %}
|
||||
</div>
|
||||
<script>document.addEventListener('DOMContentLoaded', () => document.getElementById('create-user-dialog').showModal());</script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user