У меня есть несколько динамических c полей, использующих ajax в модальном окне. Категория загружает категорию. У меня он отлично работает при создании продукта (без проблем загружает подкатегорию). Но проблема возникает при редактировании товара (с использованием модального окна).
Вот мой вопрос, как я могу сделать, чтобы была выбрана опция базы данных?
Вот что у меня есть:
Форма
<select class="form-control select2" name="category_id" id="edit_category_{{ $product->id }}" required>
@forelse($categories as $category)
<option value="{{ $category->id }}"
{{ old('category_id', $category->id ) == $product->category->id ? 'selected' : '' }}>
{{ $category->name }}
</option>
@empty
<option value="">No existen categorías</option>
@endforelse
</select>
<select class="form-control select2" name="subcategory_id" id="edit-subcategory-{{ $product->id }}" data-old="{{ old('subcategory_id') }}" required>
jQuery
$(document).ready(function(){
var products = @json($productsIds);
function loadSubcategory() {
$.each(products, function(index, value){
var categoryId = $('#edit-subcategory-' + value).val();
if ($.trim(categoryId) != '') {
$.get('get-subcategories', {category_id: categoryId}, function (subcategories) {
console.log(subcategories);
var old = $('#edit-subcategory-' + value).data('old') != '' ? $('#edit-subcategory-' + value).data('old') : '';
$('#edit-subcategory-' + value).empty();
$('#edit-subcategory-' + value).append("<option value=''>Selecciona un subcategoría</option>");
$.each(subcategories, function (index, value) {
$('#edit-subcategory-' + value).append("<option value='" + index + "'" + (old == index ? 'selected' : '') + ">" + value +" </option>");
});
});
};
});
}
loadSubcategory();
$.each(products, function(index, value){
$('#edit-category-' + value).on('change', loadSubcategory);
});
Маршрут
Route::get('/get-subcategories', 'HomeController@getSubcategories');
Контроллер
public function getSubcategories(Request $request)
{
if ($request->ajax()) {
$subcategory = Subcategory::where('category_id', $request->category_id)
->where('status', 1)
->get();
foreach ($subcategories as $subcategory) {
$subcategoriesArray[$subcategory->id] = $subcategory->name;
}
return response()->json($subcategoriesArray);
}
}