Подскажите как организовать логику. Сайт на Ларавел 5.8.
Есть админка в ней есть категории
Route::resource('admin/category', 'Admin\CategoriesController')->middleware('auth');
Подкатегории
Route::resource('admin/subcategory', 'Admin\SubcategoriesController')->middleware('auth');
И есть добавление записей
Route::resource('admin/record', 'Admin\RecordController')->middleware('auth')
Суть вопроса, при добавлении записи мне нужно в селекте выбрать категорию, подкатегорию и заполнить текстовые поля, все просто. Но в подкатегориях должны выводится разные записи. Пример:
Подкатегория person (id, cat_id, name, age, address)
Подкатегория building (id, cat_id, name, date, file, start, end)
И так далее, то есть данные в каждой записи подкатегории разные. К примеру я хочу добавить запись в подкатегорию строительство, я захожу в меню запись -> добавить и выбираю категорию Городо строительство -> подкатегорию Строительство и здесь я хочу видеть только несколько полей: Название, дату, начало строительства, конец строительства и прикрепить файл.
И так же само вывести это на фронт.
Решения данной задачи 2:
1) Верный. Вложенные категории должны выводиться через Ajax. На select отлавливаете событие изменения, получаете значение, отправляете аякс запрос с id категории, получаете ответ от сервера с подкатегориями. Примерный код:
html:
<select name='category' id='category_id'>
<option value='1'>Категория 1</option>
<option value='2'>Категория 2</option>
</select>
js (jquery)
$('#category_id').change(function(){
var id=$('#category_id').val();
$.ajax({
url: {{route('admin.getsubcats')}}
data: "catid="+id,
success: function(msg){
// тут построение select c вложенными категориями, лучше сервером отдать в json формате, а можно сразу html код
}
});
});
2) Не совсем верный, но рабочий. Выводите все категории и под категории на странице, полям подкатегорий добавляете обозначение категорий, чтобы фильтровать. При изменении категории, находите по id подкатегории с ним и делаете новый select.
Примерный код, можно запустить на https://jsfiddle.net:
html:
<select name='category' id='category_id'>
<option value='0'>-</option>
<option value='1'>Категория 1</option>
<option value='2'>Категория 2</option>
</select>
<br />
<select id='allsubcat' style="display:none">
<option value='1' class="cat1">Вложенная Категория 1</option>
<option value='2' class="cat1">Вложенная Категория 2</option>
<option value='3' class="cat2">Вложенная Категория 3</option>
<option value='4' class="cat2">Вложенная Категория 4</option>
</select>
<br />
<select id='subcat'>
</select>
js (jquery):
$("#category_id").change(function(){
$("#subcat").empty();
let id = $("#category_id").val();
$("#allsubcat .cat"+id).clone().appendTo("#subcat");
})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть файл configphp, где идет установка некоторых строковых констант (define), которые содержат в себе абсолютные пути к директориям файла,...
Всем доброго времени суток! Делаю одно задание и столкнулся с небольшой трудностьюУ меня есть некий csv файл с названиями столбцов - (За период;Учетный...
Почему нельзя удалять из коллекции в цикле for-each?
Сначала когда запускаешь приложение все работает и тема и соответствие цветов все окНо когда вызываешь метод Update цвета и тема устанавливаются...