Динамические view в Ларавел

97
08 мая 2021, 06:20

Подскажите как организовать логику. Сайт на Ларавел 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)

И так далее, то есть данные в каждой записи подкатегории разные. К примеру я хочу добавить запись в подкатегорию строительство, я захожу в меню запись -> добавить и выбираю категорию Городо строительство -> подкатегорию Строительство и здесь я хочу видеть только несколько полей: Название, дату, начало строительства, конец строительства и прикрепить файл.

И так же само вывести это на фронт.

Answer 1

Решения данной задачи 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");
})
READ ALSO
Скрипт не видит раннее подключенные модули

Скрипт не видит раннее подключенные модули

У меня есть файл configphp, где идет установка некоторых строковых констант (define), которые содержат в себе абсолютные пути к директориям файла,...

90
Получить индекс заголовка столбца

Получить индекс заголовка столбца

Всем доброго времени суток! Делаю одно задание и столкнулся с небольшой трудностьюУ меня есть некий csv файл с названиями столбцов - (За период;Учетный...

103
Почему нельзя удалять элементы из коллекции в цикле for-each?

Почему нельзя удалять элементы из коллекции в цикле for-each?

Почему нельзя удалять из коллекции в цикле for-each?

90
Реклама ломает программу

Реклама ломает программу

Сначала когда запускаешь приложение все работает и тема и соответствие цветов все окНо когда вызываешь метод Update цвета и тема устанавливаются...

76