add bootstrap validation for Direction
This commit is contained in:
parent
2c209f5ddc
commit
cc89ecabe8
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Helpers;
|
||||
|
||||
use App\Models\Direction;
|
||||
use App\Models\Faculty;
|
||||
|
||||
class PositionHelper
|
||||
|
@ -11,4 +12,10 @@ class PositionHelper
|
|||
$maxPosition = Faculty::max('position');
|
||||
return $maxPosition >= 254 ? 255 : $maxPosition + 1;
|
||||
}
|
||||
|
||||
public static function direction()
|
||||
{
|
||||
$maxPosition = Direction::max('position');
|
||||
return $maxPosition >= 254 ? 255 : $maxPosition + 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,6 @@ return [
|
|||
'name' => 'Поле "Название" должно быть уникальным для отображения на сайте',
|
||||
'description' => 'Поле "Описание" может быть пустым для отображения на сайте',
|
||||
'educational_institution_id' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению',
|
||||
'URL' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению'
|
||||
'slug' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению'
|
||||
]
|
||||
];
|
||||
|
|
|
@ -3,10 +3,35 @@
|
|||
|
||||
return [
|
||||
'faculty' => [
|
||||
'position' => 'Поле "Позиция" нужно для упарядочивания отображения на сайте',
|
||||
'position' => 'Поле "Позиция" нужно для упорядочивания отображения на сайте',
|
||||
'name' => 'Поле "Название" должно быть уникальным для отображения на сайте',
|
||||
'description' => 'Поле "Описание" может быть пустым для отображения на сайте',
|
||||
'educational_institution_id' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению',
|
||||
'URL' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению'
|
||||
]
|
||||
'slug' => 'Поле "URL" нужно для отображения в браузере'
|
||||
],
|
||||
'direction' => [
|
||||
'position' => 'Поле "Позиция" нужно для упорядочивания отображения на сайте',
|
||||
'name' => 'Поле "Название" должно быть уникальным для отображения на сайте',
|
||||
'description' => 'Поле "Описание" может быть пустым для отображения на сайте',
|
||||
'educational_institution_id' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению',
|
||||
'department_id' => 'Поле "Кафедра" указывает на привязку направления к кафедре',
|
||||
'education_level_id' => 'Поле "Уровень Образования" указывает на привязку направления к уровню образованию',
|
||||
'education_form_id' => 'Поле "Форма образования" указывает на привязку направления к форма образованию',
|
||||
'budget_places' => 'Поле "Бюджетные места" указывает на количество бюджетных мест в направлении',
|
||||
'paid_places' => 'Поле "Платные места" указывает на количество платных мест в направлении',
|
||||
'cost_paid_place' => 'Поле "Стоимость обучения" указывает на стоимость платных мест в направлении',
|
||||
'slug' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению',
|
||||
'code' => 'Поле "URL" нужно для отображения в браузере',
|
||||
'quota' => 'Поле "Квота" указывает на количество мест по квоте',
|
||||
'period' => 'Поле "Период обучения" указывает на период обучения',
|
||||
'direction_profile' => 'Поле "Профиль подготовки" указывает на привязку направления к профилям подготовки',
|
||||
|
||||
],
|
||||
'entrance-examination' => [
|
||||
'examination_type_id' => 'Поле "Тип экзамена" указывает на привязку вступительного испытания к типу экзамена',
|
||||
'subject_id' => 'Поле "Предмет" указывает на привязку вступительного испытания к предмету',
|
||||
'subject_type_id' => 'Поле "Тип Предмета" указывает на привязку вступительного испытания к типу предмету',
|
||||
'scores' => 'Поле "Кол-во баллов" указывает на привязку вступительного испытания к Кол-ву баллов',
|
||||
'position' => 'Поле "Позиция" нужно для упорядочивания отображения на сайте',
|
||||
],
|
||||
];
|
||||
|
|
|
@ -1,15 +1,20 @@
|
|||
@php use App\Helpers\PositionHelper; @endphp
|
||||
@extends('layouts.admin_layout')
|
||||
@section('content')
|
||||
@auth()
|
||||
<h1 class=""> Создать Направление</h1>
|
||||
{{ Form::open(['url' => route('directions.store'), 'method' => 'POST', 'class' => '']) }}
|
||||
{{ Form::open(['url' => route('directions.store'), 'method' => 'POST', 'class' => 'needs-validation', 'novalidate']) }}
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('department_id', 'Кафедра') }}
|
||||
{{ Form::label('department_id', 'Кафедра', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.department_id')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::select('department_id', $departments, null, ['class' => 'form-select']) }}
|
||||
{{ Form::select('department_id', $departments, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.department_id'), 'required']) }}
|
||||
<div class="invalid-feedback">
|
||||
Поле "Кафедра" обязательно!
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -19,10 +24,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('education_level_id', 'Увовень образования') }}
|
||||
{{ Form::label('education_level_id', 'Уровень образования', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.education_level_id')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::select('education_level_id', $levels, null, ['class' => 'form-select']) }}
|
||||
{{ Form::select('education_level_id', $levels, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.education_level_id'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -32,10 +38,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('education_form_id', 'Форма образования') }}
|
||||
{{ Form::label('education_form_id', 'Форма образования', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.education_form_id')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::select('education_form_id', $forms, null, ['class' => 'form-select']) }}
|
||||
{{ Form::select('education_form_id', $forms, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.education_form_id'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -47,10 +54,11 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('position', 'Позиция') }}
|
||||
{{ Form::label('position', 'Позиция', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.position')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::number('position', '', ['class' => 'form-control']) }}
|
||||
{{ Form::number('position', PositionHelper::direction(), ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.position'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -60,10 +68,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('code', 'Код') }}
|
||||
{{ Form::label('code', 'Код', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.code')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::text('code', '', ['class' => 'form-control']) }}
|
||||
{{ Form::text('code', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.code'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -73,10 +82,10 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('slug', 'URL') }}
|
||||
{{ Form::label('slug', 'URL', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.slug')]) }}
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::text('slug', '', ['class' => 'form-control']) }}
|
||||
{{ Form::text('slug', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.slug')]) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -86,10 +95,11 @@
|
|||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
{{ Form::label('name', 'Название') }}
|
||||
{{ Form::label('name', 'Название', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.name')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::text('name', '', ['class' => 'form-control']) }}
|
||||
{{ Form::text('name', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.name'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -98,10 +108,10 @@
|
|||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
{{ Form::label('description', 'Описание') }}
|
||||
{{ Form::label('description', 'Описание', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.description')]) }}
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::text('description', '', ['class' => 'form-control']) }}
|
||||
{{ Form::text('description', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.name')]) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -110,14 +120,14 @@
|
|||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('budget_places', 'Кол-во бюджетных мест') }}
|
||||
{{ Form::label('budget_places', 'Кол-во бюджетных мест', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.budget_places')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::number('budget_places', null, ['class' => 'form-select']) }}
|
||||
{{ Form::number('budget_places', null, ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.budget_places'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -127,10 +137,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('quota', 'Квота') }}
|
||||
{{ Form::label('quota', 'Квота', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.quota')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::number('quota', null, ['class' => 'form-select']) }}
|
||||
{{ Form::number('quota', null, ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.quota'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -140,10 +151,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('paid_places', 'Кол-во мест по договорам') }}
|
||||
{{ Form::label('paid_places', 'Кол-во мест по договорам', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.paid_places')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::number('paid_places', null, ['class' => 'form-select']) }}
|
||||
{{ Form::number('paid_places', null, ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.paid_places'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -154,10 +166,11 @@
|
|||
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('cost_paid_place', 'Стоимость обучения') }}
|
||||
{{ Form::label('cost_paid_place', 'Стоимость обучения', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.cost_paid_place')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::number('cost_paid_place', null, ['class' => 'form-select']) }}
|
||||
{{ Form::number('cost_paid_place', null, ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.cost_paid_place'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -168,10 +181,11 @@
|
|||
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('period', 'Период обучения') }}
|
||||
{{ Form::label('period', 'Период обучения', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.period')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::text('period', null, ['class' => 'form-select']) }}
|
||||
{{ Form::text('period', null, ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.period'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -184,10 +198,11 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('direction_profile', 'Профиль подготовки') }}
|
||||
{{ Form::label('direction_profile', 'Профиль подготовки', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.direction_profile')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::select('direction_profiles[]', $directionProfiles, null, ['class' => 'form-control rounded border-gray-300 w-1/3 h-32', 'multiple' => 'multiple']) }}
|
||||
{{ Form::select('direction_profiles[]', $directionProfiles, null, ['class' => 'form-control rounded border-gray-300 w-1/3 h-32', 'multiple' => 'multiple', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.direction.direction_profile'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -204,10 +219,11 @@
|
|||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('entrance-examination[0][examination_type_id]', 'Тип экзамена') }}
|
||||
{{ Form::label('entrance-examination[0][examination_type_id]', 'Тип экзамена', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.examination_type_id')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1">
|
||||
{{ Form::select('entrance-examination[0][examination_type_id]', $examination_types, null, ['class' => 'form-select']) }}
|
||||
{{ Form::select('entrance-examination[0][examination_type_id]', $examination_types, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.examination_type_id'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -217,10 +233,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('entrance-examination[0][subject_id]', 'Предмет') }}
|
||||
{{ Form::label('entrance-examination[0][subject_id]', 'Предмет', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.subject_id')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1 col">
|
||||
{{ Form::select('entrance-examination[0][subject_id]', $subjects, null, ['class' => 'form-select']) }}
|
||||
{{ Form::select('entrance-examination[0][subject_id]', $subjects, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.subject_id'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -230,10 +247,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('entrance-examination[0][subject_type_id]', 'Тип предмета') }}
|
||||
{{ Form::label('entrance-examination[0][subject_type_id]', 'Тип предмета', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.subject_type_id')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1 col">
|
||||
{{ Form::select('entrance-examination[0][subject_type_id]', $subjectTypes, null, ['class' => 'form-select']) }}
|
||||
{{ Form::select('entrance-examination[0][subject_type_id]', $subjectTypes, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.subject_type_id'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -243,10 +261,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('entrance-examination[0][scores]', 'Кол-во баллов') }}
|
||||
{{ Form::label('entrance-examination[0][scores]', 'Кол-во баллов', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.scores')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1 col">
|
||||
{{ Form::text('entrance-examination[0][scores]', '', ['class' => 'form-control']) }}
|
||||
{{ Form::number('entrance-examination[0][scores]', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.scores'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -256,10 +275,11 @@
|
|||
</div>
|
||||
<div class="col">
|
||||
<div class="mt-3">
|
||||
{{ Form::label('entrance-examination[0][position]', 'Позиция') }}
|
||||
{{ Form::label('entrance-examination[0][position]', 'Позиция', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.position')]) }}
|
||||
<span class="text-danger">*</span>
|
||||
</div>
|
||||
<div class="mt-1 col">
|
||||
{{ Form::text('entrance-examination[0][position]', '', ['class' => 'form-control']) }}
|
||||
{{ Form::number('entrance-examination[0][position]', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.entrance-examination.position'), 'required']) }}
|
||||
</div>
|
||||
<div>
|
||||
@if ($errors->any())
|
||||
|
@ -282,6 +302,7 @@
|
|||
{{ Form::close() }}
|
||||
</div>
|
||||
@include('admin.catalog.direction.script')
|
||||
@include('layouts.bootstrap_validation')
|
||||
@endauth
|
||||
@endsection
|
||||
|
||||
|
|
|
@ -81,22 +81,5 @@
|
|||
</div>
|
||||
</div>
|
||||
@endauth
|
||||
<script>
|
||||
(function () {
|
||||
'use strict'
|
||||
var forms = document.querySelectorAll('.needs-validation')
|
||||
|
||||
Array.prototype.slice.call(forms)
|
||||
.forEach(function (form) {
|
||||
form.addEventListener('submit', function (event) {
|
||||
if (!form.checkValidity()) {
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
}
|
||||
|
||||
form.classList.add('was-validated')
|
||||
}, false)
|
||||
})
|
||||
})()
|
||||
</script>
|
||||
@include('layouts.bootstrap_validation')
|
||||
@endsection
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
<script>
|
||||
(function () {
|
||||
'use strict'
|
||||
var forms = document.querySelectorAll('.needs-validation')
|
||||
|
||||
Array.prototype.slice.call(forms)
|
||||
.forEach(function (form) {
|
||||
form.addEventListener('submit', function (event) {
|
||||
if (!form.checkValidity()) {
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
}
|
||||
|
||||
form.classList.add('was-validated')
|
||||
}, false)
|
||||
})
|
||||
})()
|
||||
</script>
|
Loading…
Reference in New Issue